Official Releases

Official Releases

This is where to find the documentation corresponding to an official, tagged release. If you are looking for the most current documentation of the master branch, please head back to the main page.

Latest Stable Release

Documentation: 8.4.0

Download: https://github.com/jacobwilliams/json-fortran/releases/latest

Past Releases

Note: There is currently no way to navigate back to the general/master documentation from the documentation for official releases other than using the browser’s back button. Feel free to bookmark this page, or the main project page for convenient navigation.

Development Version

Documentation for the latest development version may be found at https://jacobwilliams.github.io/json-fortran/prev/8.4.0/index.html or generated locally using the build.sh build script.

Changes Between Releases

Included below is the changelog–a list of significant changes implemented between each release.

Change Log

Table of Contents

Unreleased

Complete Changeset

8.4.0 (2024-03-06)

Complete Changeset or Download v8.4.0

Enhancements:

Bug Fixes:

8.3.0 (2022-05-07)

Complete Changeset or Download v8.3.0

Enhancements:

Bug Fixes:

8.2.5 (2021-08-17)

Complete Changeset or Download v8.2.5

Enhancements:

  • Enabled some extra warnings in the Visual Studio Debug project
  • Removed obsolete forall construct from unit test 12

Bug Fixes:

  • Fixed a potential uninitialized variable issue in get_current_line_from_file_stream
  • Fixed a memory leak when parsing an invalid JSON. Fixed various memory issues in the unit tests #494 #495 (jacobwilliams)

8.2.4 (2021-08-15)

Complete Changeset or Download v8.2.4

Enhancements:

  • Documentation updates. #492 (jacobwilliams)
  • Added MultiProcessorCompilation="true" to the Visual Studio project file.

Bug Fixes:

  • Fixed a memory leak when deserializing an empty list. #488 #493 (jacobwilliams)
  • Fixed a memory leak when cloning a JSON pointer. #489 #490 (jacobwilliams)
  • Fixed a bug where some error messages would attempt to print unallocated name values. #491

8.2.3 (2020-06-05)

Complete Changeset or Download v8.2.3

Enhancements:

  • No code changes. Only documentation updates.

8.2.2 (2020-06-05)

Complete Changeset or Download v8.2.2

Enhancements:

  • Added support for the Fortran Package Manger. #483 (jacobwilliams)
  • Updated CI to use GitHub Actions, including auto-deployment of documentation. #476 #484 (jacobwilliams)
  • Eliminated some compiler warnings about real conversions.

Bug fixes:

  • Fixed a bug in test case 47.

8.2.1 (2020-01-02)

Complete Changeset or Download v8.2.1

Enhancements:

  • Fixed a couple compiler warnings when using the latest Intel Fortran compiler. #477 (jacobwilliams)
  • replaced -std15 with -std18 for the Intel compiler in the FoBiS build file.
  • Updated the Visual Studio test project with some missing test cases. (jacobwilliams)

Bug fixes:

  • Bug fix in json_value_remove: the parent and previous pointers should also be nullified when removing from an array. #477 #479 (jacobwilliams)

8.2.0 (2020-08-16)

Complete Changeset or Download v8.2.0

Enhancements:

  • Updated the compress_vectors option so that now vectors of mixed integers and reals are also compressed. #470 #471 (jacobwilliams)

8.1.0 (2020-06-21)

Complete Changeset or Download v8.1.0

Enhancements:

Bug fixes:

8.0.0 (2020-04-04)

Complete Changeset or Download v8.0.0

Enhancements:

  • Cleanup of the API for reading and writing JSON. The main methods are now called print, load, serialize and deserialize. Note that the previous ones are still present for backward compatibility. #397 #409 (jacobwilliams)
  • Added a finalizer to the json_file type #199 #406 (jacobwilliams)
  • Added new optional arguments (null_to_real_mode, non_normal_mode, use_quiet_nan) to the initialize routines to handle NaN and Infinity. #395
  • Added a new optional argument (strict_integer_type_checking) to the initialize routines. If enabled, when parsing an integer value, if the parsing fails (e.g., the integer is outside the range of the integer kind), it will then attempt to convert it to a real. #444 #446 (jacobwilliams)
  • json_info will now check for exceptions and raise one if the pointer is not associated #424 #425 (jacobwilliams)
  • Allow the parser to work with some nonstandard real value representations (leading +, no leading digit before decimal, D/d format). #417 #418 (jacobwilliams)
  • Added a character string to json_file assignment operator #410 #411 (jacobwilliams)
  • Added a json_print_to_console method to json_core to match the one in json_file #408
  • The output array is now deallocated if an exception occurs in a json_get_*_vec routine #416 #419 (jacobwilliams)

Bug fixes:

  • Fixed a crash in json_file_check_for_errors if the error_msg was not present. #420
  • Fixed a potential issue with real to integer conversion when the library is compiled with a non-default integer kind. #449 #450 (jacobwilliams)
  • Fixed a dangling pointer in unit test 10. #422 #423 (jacobwilliams)

CMake updates:

  • Updated CMake to enable building JSON-Fortran as a subdirectory of another project #445 #443 (rouson)
  • Updated CMake for compatibility with older versions < 3.7. #442 #451 jacobwilliams)
  • Allow linking to JSON-Fortran from GFortran programs using OpenCoarrays as the coarray runtime implementation. Use the -DJSON_FORTRAN_USE_OpenCoarrays:BOOL=ON option to CMake to enable this. (NOTE: The fact that this is required may be a bug in GFortran.)

CI updates:

7.1.0 (2019-06-23)

Complete Changeset or Download v7.1.0

Enhancements:

Bug fixes:

  • Fix for undeclared variable causing failing test on Mac #392 (porteri)
  • Fixed a bug where using json%add() to create new variables in a structure would stop the program if stop_on_failure was enabled. #403 #404 (jacobwilliams)

7.0.0 (2019-01-26)

Complete Changeset or Download v7.0.0

Enhancements:

  • Added support for multiple real kinds:
  • The library now supports the default real kind specified (real32, real64 and real128) as well as the kinds in this set with less precision than the default. For example, if real64 is specified (which is the default), then both real32 and real64 are available in all the public APIs. Internally, the values are always stored in a variable of the default kind. #386 #387 (jacobwilliams)
  • Added a create_real() method and a json_real parameter to replace create_double() and json_double. The old versions are still available for backward compatibility.
  • Added CMake options to control integer and real kinds #284
  • Updated the default real format statement to correctly correspond to the specified real kind.
  • Added new json_file constructor functions for strings. This allows a json_file to be initialized using syntax such as: f = json_file('{"x": 1}'). #381 #382 (jacobwilliams)
  • Fixed some links in the documentation.

Bug fixes:

  • Fixed an issue where the parser would fail if the JSON structure was just a lone integer. #388 #389 (jacobwilliams)
  • Fixed an issue where the unit tests did not compile when using real32 or real128. #383 #384 (jacobwilliams)
  • Fixed various issues preventing compilation if the integer kind was changed from the default. #365 #385 (jacobwilliams)
  • Renamed the integrated tests preprocessor flag to INTEGRATED_TESTS since it was mispelled. #390 #391 (jacobwilliams)

6.11.0 (2019-01-19)

Complete Changeset or Download v6.11.0

Enhancements:

6.10.0 (2019-10-20)

Complete Changeset or Download v6.10.0

Enhancements:

Bug fixes:

6.9.0 (2018-07-29)

Complete Changeset or Download v6.9.0

Enhancements:

  • Some efficiency improvements when parsing strings. #352 (jacobwilliams)
  • Speed up the unescape_string() routine. #351
  • Some cleanup and efficiency improvements for hex string validation. #354
  • Various updates to error message reporting.
  • The two arguments to json_file_check_for_errors() are now optional to match the core routine. #356
  • Some adjustments to error messages for invalid hex strings. Validation of hex strings is now done in the unescape_string() routine. #354
  • A string that ends in an escape character \ is now flagged as invalid. #353

Fixed bugs:

  • Fixed a bug in the annotate_invalid_json() routine. #355
  • Fixed an issue with the jf_test_06 unit test failing on Windows. #357

6.8.0 (2018-07-19)

Complete Changeset or Download v6.8.0

Enhancements:

  • Added some additional checks so that the destroy method could still be used to destroy some malformed JSON linked lists. Also updated the validate method to check for circular references. #346 #349 (jacobwilliams)
  • Added missing arguments (trim_str and adjustl_str) to some of the string wrapper routines. #347 #348 (jacobwilliams)
  • Various minor changes to remove some compiler warnings and a line length standards violation.
  • Various documentation string updates.

Fixed bugs:

  • Fixed a dangling pointer bug in the destroy method that was causing unpredictable behavior in this routine which could cause a crash for some compilers #307 #350 (jacobwilliams)

6.7.0 (2018-07-10)

Complete Changeset or Download v6.7.0

Enhancements:

  • Made the two arguments to json_check_for_errors() optional, so now either or both can be used. Note that if no error has been raised, then error_msg is now returned unallocated. #344 #345 (jacobwilliams)
  • Added an additional error check in json_value_print() to check for an unassociated pointer. #342 #343 (jacobwilliams)
  • Added remove() method to json_file #339 #340 (jacobwilliams)
  • Added additional error checks to json_value_add_member(). Now it will raise an exception if try to add a child to a non-array or non-object. #337 #338 (jacobwilliams)
  • Added some additional unit tests to increase coverage #336 (jacobwilliams)

Fixed bugs:

  • Fixed a bug in json_value_clone_func() where it could crash if attempting to clone an array element. Updated this routine to improve behavior when cloning an array element (the subsequent entries are no longer cloned). #334 #335 (jacobwilliams)

6.6.0 (2018-07-01)

Complete Changeset or Download v6.6.0

Enhancements #332 (jacobwilliams)

  • Now, attempting to get a string variable as an integer, double, or logical will attempt to convert it to a string if strict_type_checking=False. Formerly these cases would raise an exception. #331
  • Fixed an inconsistency in json_get_by_path(). Now if using the optional found argument, any exceptions raised by this routine are cleared. #330
  • Changed the name argument in json_value_remove_if_present() to ‘path’ to be consistent with other routines since it is really a path. #329
  • Various documentation string updates.

Fixed bugs:

  • Fixed a bug in wrap_json_get_path() where an optional argument was being used without checking if it was present. #333

6.5.0 (2018-06-23)

Complete Changeset or Download v6.5.0

Enhancements & Fixed Issues:

  • Added optional trim and adjustl arguments were added to all the various routines for adding strings and string vectors to JSON #323 (jacobwilliams)
  • The trailing_spaces_significant flag is now respected for name keys when creating a JSON structure. #324 #326 (jacobwilliams)

6.4.0 (2018-06-10)

Complete Changeset or Download v6.4.0

Enhancements:

  • Added optional stop_on_error argument to the various initialize() routines to immediately stop the program if an exception is raised. #318 #320 (jacobwilliams)

  • Added routines to check if a name key is present in a json_file object, which is also available using the .in. operator. #316 #319 (jacobwilliams)

  • Added routines to rename a json variable by specifying the path. #314 #317 (jacobwilliams)

  • Added a Fobis rule for running the test programs. #321 (jacobwilliams)

6.3.0 (2018-04-20)

Complete Changeset or Download v6.3.0

Enhancements:

  • Add a FoBiS configuration file that can be used to build the library, tests, and documentation. #310 #311 (jacobwilliams)
  • CMake produced Visual Studio Project #70 (jacobwilliams)
  • Minor changes: renamed some of the example files and reverted back to older versions of FoBiS and markdown for documentation building on Travis-CI #313 (jacobwilliams)

Fixed issues:

  • Fixed a bug in the escaping logic where / characters in strings would not be printed under some circumstances. This bug was introduced in the 6.2.0 release. #312 (jacobwilliams)

6.2.0 (2018-03-10)

Complete Changeset or Download v6.2.0

Enhancements:

  • Allow the unit tests to be run from within the Visual Studio solution #295 (Hugh-walsh, jacobwilliams)
  • Compiling now works for the CMake-produced Visual Studio solution on Windows (note that the CMake-produced solution is a bit different from the other one provided). #70 #309 (handrake0724, jacobwilliams)
  • Added a new option escape_solidus to specify if the forward slash (“/”) is to be escaped when serializing JSON. By default, it is no longer escaped (this changes the behavior introduced in 6.0.0) #304 #305 (jacobwilliams)

Fixed issues:

6.1.0 (2017-11-05)

Complete Changeset or Download v6.1.0

Enhancements:

  • Added an optional allow_duplicate_keys argument to the various initialize routines. This is True by default. If False, then duplicate keys are considered an error. Also added check_for_duplicate_keys and check_children_for_duplicate_keys methods that can be called. #250 #290 (jacobwilliams)
  • Added support for JSONPath “bracket-notation” mode for specifying paths to JSON variables. #266 #292 (jacobwilliams)

Fixed issues:

  • Replaced CMAKE_INSTALL_LIBDIR with INSTALL_LIB_DIR in the CMake project. #286 (foeroyingur)
  • Fixed bug in the lowercase_string routine that could cause a crash for Debug builds. #293 #294 (jacobwilliams)

6.0.0 (2017-08-24)

Complete Changeset or Download v6.0.0

Enhancements:

Fixed issues:

  • Fixed a bug where using no_whitespace mode could still print line breaks in some cases #288 (jacobwilliams)
  • Strings (name key and value) were not being properly escaped/unescaped in some contexts. This change introduces a small backward incompatibility (formerly, if keys contained escape characters, the user would have to include them when getting their value). Now, the string variables in all user-facing API calls are unescaped (i.e., the user does not have to manually escape the keys to get their associated value). All strings are also now properly returned unescaped, no matter how the JSON structure was constructed. Escaping is now done in all cases if necessary when the JSON is printed to a string, file or the console. #287 #289 (jacobwilliams)

5.3.0 (2017-04-07)

Complete Changeset or Download v5.3.0

Enhancements:

  • It is now possible to build a JSON structure by specifying the paths to the variables. The update routines also now use this new feature so if the variable is not present, it will be added using the path (formerly, it added it as a name, which was inconsistent). Renamed the argument to the update routines from name to path. #257 #261 #268 #270 (jacobwilliams)
  • Added new get routine to return an allocatable string array #245 #265 (jacobwilliams)
  • Arrays of scalar values can now optionally be printed on a single line #228 #273 (jacobwilliams)
  • When reading an empty JSON array it is now returned as an allocated array with zero length (rather than an unallocated array). #276 #277 (jacobwilliams)

Fixed issues:

  • Fixed an issue where the char_count wasn’t always correct, which caused the error message for invalid JSON to be wrong. #272 #274 (jacobwilliams)
  • Fixed an issue where values with significant trailing whitespace were being trimmed when printed. #263 (jacobwilliams)
  • Fixed two bugs in json_get_path for RFC 6091 path mode. Special characters weren’t being encoded properly, and it didn’t work if the final key was all whitespace. #262 #264 (jacobwilliams)
  • Fixed an issue with indenting of arrays within arrays. #269 #271 (jacobwilliams)

5.2.0 (2017-03-05)

Complete Changeset or Download v5.2.0

Enhancements:

Fixed issues:

  • Real numbers now written with 17 digits of precision (previously it was using 16 which doesn’t accurately represent all values to full precision) #230 #241 (jacobwilliams) #232 (jacobwilliams)

5.1.0 (2016-08-14)

Complete Changeset or Download v5.1.0

Enhancements:

Fixed issues:

5.0.2 (2016-06-11)

Complete Changeset or Download v5.0.2

Note: This release contains no changes to the library, only the documentation.

  • Minor documentation fix.

5.0.1 (2016-06-11)

Complete Changeset or Download v5.0.1

Note: This release contains no changes to the library, only the build system and documentation.

Fixed issues:

  • FORD now uses the Intel preprocessor when library is built with the Intel compiler #205
  • ShellCheck script files #181

Merged pull requests:

  • De-lint shell scripts with ShellCheck, debug FORD upgrade, and various updates to documentation and build system. #201 (zbeekman)

5.0.0 (2016-05-09)

Complete Changeset or Download v5.0.0

See also this Wiki page on how to update your code to be compatible with this release.

Enhancements:

  • Split json_module into multiple files. #168 #170 (jacobwilliams)
  • The library is now thread safe #36 #170 (jacobwilliams)
  • Added new initialize(), failed(), print_error_message(), check_to_errors(), and clear_exceptions() to the json_file class. #170 (jacobwilliams)
  • The number of spaces for indenting can now be user specified. #170 (jacobwilliams)
  • Updates for Visual Studio project #170 (jacobwilliams)
  • Added a validate() method for validating JSON linked lists #196 #197 (jacobwilliams)
  • Added some additional error checks for malformed JSON linked lists #182 (jacobwilliams)
  • Added a new routine is_child_of to check if one json_value is a descendant of another #182 (jacobwilliams)
  • Added new options for case-insensitive searching of names/paths, as well as the option to consider trailing space significant #185 #192 (jacobwilliams)
  • Added a routine to enable swapping of elements in a json_value linked list #177 #182 (jacobwilliams)
  • Rename parameters RK, IK, LK, CK, and CDK using less generic names (json_RK, json_IK, json_LK, json_CK, and json_CDK) #172 (jacobwilliams)
  • Calling the initialize() method (which is now in json_core and json_file) is no longer mandatory #171 (jacobwilliams)
  • Added a rename() method for renaming a json_value variable #184 #187 (jacobwilliams)
  • Added some compiler directives so that workarounds for Gfortran bugs are not used for other compilers #190 (jacobwilliams)
  • Added option for strict typing for get routines #173 (jacobwilliams)
  • Various cosmetic changes and renaming of some of the dummy arguments in some procedures. #198 (jacobwilliams)
  • Added checks to avoid unnecessary looping when traversing arrays if an exception is thrown #183 (jacobwilliams)
  • Added a new get_child method to get the first child. [9d4f736] (jacobwilliams)
  • Added some additional error checks for unassociated pointers [9d4f736] (jacobwilliams)
  • Ensure null pointers are returned for some error cases [838f476] (jacobwilliams)

Fixed Issues

  • Fixed a bug in the traverse() routine, where the finished output flag was not being correctly checked #182 (jacobwilliams)

4.3.0 (2015-12-05)

Complete Changeset or Download v4.3.0

Enhancements:

  • Added routines for getting the parent, next, previous, and tail pointers #161 (jacobwilliams)
  • Added a deep copy routine for json_value structures #160 (jacobwilliams)
  • Updated the Visual Studio solution to VS 2013. Also removed the test projects (it now just compiles the library) (jacobwilliams)

Fixed issues:

  • Rewrote logic for decoding strings, and fixed bugs related to parsing strings with certain escape character combinations #164 (jacobwilliams)
  • Fixed a bug where some real numbers weren’t being read in properly. Also added an option to output real numbers with fmt=* formatting #157 (jacobwilliams)

Merged pull requests:

4.2.0 (2015-08-03)

Complete Changeset or Download v4.2.0

Enhancements

Fixed issues:

  • Fixed bad gcov reports being generated due to a gcov/gfortran bug, #131 via PR #137 from zbeekman
  • Fixed inaccurate coverage reports via PR #109 from zbeekman
  • Fixed a small consistency issue when outputting floating point numbers via PR #125
  • Problems writing JSON to error_unit (0) due to JSON-Fortran’s special interpretation of unit=0 #85 fixed via PR #111 from zbeekman
  • Broken parsing error message for empty line PR #110 (jacobwilliams)

Merged pull requests:

4.1.1 (2015-05-27)

Complete Changeset or Download v4.1.1

Enhancements

  • Installation now possible with a Homebrew package on Mac OS X
  • CMake install option to use a more traditional Gnu install structure (to support Homebrew installation) PR #101 from zbeekman

Fixed issues:

Merged pull requests:

4.1.0 (2015-05-05)

Complete Changeset or Download v4.1.0

Enhancements:

Merged pull requests:

4.0.0 (2015-03-16)

Complete Changeset or Download v4.0.0

Enhancements

Fixed issues:

  • Stack overflow in destroy for large structure #76 fixed in PR #77 from jacobwilliams
  • Discrepancy with dummy argument attributes for path between get and get_..._vec procedures #79
  • Small bug fix for CMake install #68 (zbeekman)
  • JSON output files from tests are overwriting expected outputs and outputs from other tests #86 (zbeekman)
  • NAG Fortran Errors on module procedure :: change to module procedure with no double colon PR #78 from kmanalo
  • CMake for jf_test_9.f90 broke #74 (zbeekman)

Merged pull requests:

3.1.0 (2015-02-28)

Complete Changeset or Download v3.1.0

Enhancements:

  • Compact real number printing (0.0 instead of 0.00000...E000) with ability to revert to old behavior #39 (implemented in PR #60 from zbeekman and PR #61 from jacobwilliams)
  • Read JSON structure from a character string #5
  • Adopted official contributing guidelines and added a CONTRIBUTING.md #47

Fixed issues:

  • Build script (build.sh) failing with Intel’s ifort #53, fixed by PR #54 (from zbeekman)
  • Segfaults and unexpected behavior due to optional dummy arguments being dereferenced outside of if (present(…)) #52
  • Documentation not being produced for tests because tests directory should be sub-directory of src #49
  • Example 8 failing on gfortran 4.9.2 #44
  • CMake Tests 3 and 8 fail due to new test case, example 6, added in e636f96 #30
  • CMake build using makefiles fails if parallel build is specified #8, fixed by PR #50 from zbeekman

Merged pull requests:

3.0.0 (2015-01-18)

Complete Changeset or Download v3.0.0

Fixed issues:

  • Intel compiler bug triggered by commit d2622a8 #41
  • Unaligned data warnings with Intel compiler #34
  • CMake fails due to bad path to robodoc.rc #31
  • Indentation of output wrong for some nested objects #29
  • Intel build broke #28
  • CMake misbehaving when ROBODoc absent #26
  • Differentiate internal (low level, private) procedures/types/etc from public API in documentation #21

Merged pull requests:

2.0.0 (2014-12-27)

Complete Changeset or Download v2.0.0

Enhancements: - Significant changes to the API including new procedures - Code re-factoring - SCons build added thanks to @bruceravel

Fixed issues:

  • enable wiki contributions from the public #23

1.0.0 (2014-06-23)

Download v1.0.0

Enhancements:

Fixed issues:

  • Unit tests fail when compiled with GFortran #19
  • CMake outputs of ROBODoc must be specified in CMakeLists.txt manually #17
  • Invalid JSON input files (test1.json, test5.json) #10, fixed by PR #11 (zbeekman)
  • char() is processor dependent, use achar() #20 (pull request from zbeekman)
  • Bug-fix for ROBODoc documentation generation with CMake #16 (pull request from zbeekman)
  • Change library file from libjson to libjsonfortran #4

* This Change Log was generated with help from github_changelog_generator