Skip to content

Releases: sourceryinstitute/dag

3.0.1 Fix example and improve documentation

07 Dec 20:28
63ef75c
Compare
Choose a tag to compare

This release works around a gfortran bug that prevented correct execution of example/read-from-json.f90, adjusts the README.md accordingly and fixes some broken links or outdated information in README.md.

What's Changed

  • fix(read-from-json): declare instead of associate by @rouson in #62

Full Changelog: 3.0.0...3.0.1

3.0.0 Update dependencies

07 Dec 20:00
2091217
Compare
Choose a tag to compare

This release updates the DAG dependencies, including one breaking change: replacing jsonff with rojff.

What's Changed

Full Changelog: 2.1.1...3.0.0

Remove non-conforming code

24 Sep 21:54
d83d0a4
Compare
Choose a tag to compare

The 2.1.0 release introduced concurrent in two places where it is disallowed by the Fortran 2018 standard. 🩹
For details, see PR #58

Concurrent topological sorting

22 Sep 19:09
923348e
Compare
Choose a tag to compare

This release provides a refactored topological_sort function that

  1. Converts the internal subroutine depth_first_search to a function, which means 👀
    a. all procedures in dag are now functions except Vegetable's runsubroutine in the test suite 💯
    b. every function is pure except those that call jsonff (which was already true before this release). ❄️
  2. Use the resulting clarity in information flow to eliminate several unnecessary local variables, ℹ️
  3. Changes several remaining local declarations to associations, which 🎏
    a. avoids unnecessary temporary copies and ©️
    b. prevents some potential uses of uninitialized variables (none were present). 😨
  4. Converts do loops to do concurrent, opening opportunities for future optimization 🚀 via
    a. vectorization, 🏹
    b. multithreading, or 🧵
    c. GPU acceleration. 🎮

Bugfix for elemental vertex getters

21 Sep 20:10
1dd4eab
Compare
Choose a tag to compare

Fix a bug where the getters for vertex_t were elemental, but returned a character with length equal to a component of the type. This would produce an array of characters with different lengths, which is not possible in Fortran. The fix is to return a varying_string.

Functional programming interface, improved documentation, and new examples

17 Sep 16:51
ffb3c5b
Compare
Choose a tag to compare

This release refactors dag significantly and so that

  • All type-bound procedures are functions with intent(in) dummy arguments.
  • All type-bound procedures are pure except those that use jsonff. ❄️
  • The examples demonstrate a pattern that liberates the user from thinking about vertex identifiers. 🗽
  • FORD-style comments have been added or updated on each module, derived type, constructor, and type-bound procedure. 🚗
  • The README.md file has been updated to reflect the changes and to show how to build serial and parallel versions of the library and how to run the new examples.

Vertex identifiers are no longer stored internally, but the interface still has something similar: the user designates dependencies by passing each dependency's position in the vertex_t array that is the lone argument of the component-wise dag_t constructor. 🥪 Two programs in the example subdirectory show how to discover the positions automatically by passing a character array of vertex names to findloc. 🔍

Fixes and documentation update

31 Aug 19:44
90a5bc9
Compare
Choose a tag to compare

Fixes

  • Update the jsonff dependency,
  • Switch from the sourcery dependency to the assert dependency, and
  • Remove a ford bug workaround.

Documentation Update

Generating HTML documentation now requires ford 6.1.1.

Add get_num_vertices

20 Apr 20:20
f953b19
Compare
Choose a tag to compare

This release adds a new type-bound procedure for getting the number of vertices in a dag.

New build system, test harness, unit tests, documentation, assertions, and JSON I/O

25 Feb 05:46
8a91e19
Compare
Choose a tag to compare

Changes since the original fork of daglib:

  • Add a build system and test harness automated by fpm, 🏗️ 🧪
  • Add unit tests written with Vegetables, 🥔 🥒 🍚 🍈 🍆
  • Add continuous-integration testing and documentation deployment via GitHub Actions,
  • Generate documentation by FORD,
  • Runtime assertion-checking using Sourcery, and 🎩 🐇
  • JSON file input/output using jsonff.