Release Notes

These notes are intended to serve as a guide to the user-visible features in a particular art suite release. As such, only versions included in art suite releases, or those with substantive changes, are included.

fhicl-cpp 4.12.02 (2020/08/28)

This version corrects some typographical errors in the program options of some helper executables.

fhicl-cpp 4.12.01 (2020/07/24)

This version correctly handles optional delegated parameters that are absent from the configuration (resolves bug #24659).

fhicl-cpp 4.12.00 (2020/07/07)

This version only supports SLF7. The e20 qualifier (GCC 9.3 with C++17 enabled) has been added. This version also includes the following FHiCL binding enhancements:

  • A new fhicl-get executable, providing a command-line interface that mimics fhicl::ParameterSet::get<T> (resolves feature #23751). Type 'fhicl-get -h' for usage.
  • A new UPS package fhiclpy, which now supports the fhicl Python extension module (resolves issue #23648).
  • Conversion from FHiCL tables to arbitrary C++ types through the fhicl::TableAs facility (resolves feature #23669).

fhicl-cpp 4.11.01 (2020/03/02)

fhicl-cpp 4.11.00 (2019/11/12)

This release only supports qualifiers e19 and c7. In addition, Python 3 is now enabled by default. In order to use Python 2, one must specify the 'py2' qualifier when setting up the fhiclcpp UPS product.

fhicl-cpp 4.10.00 (2019/06/21)

fhicl-cpp 4.09.03 (2019/03/07)

fhicl-cpp 4.09.02 (2019/03/05)

This version re-enables the fhicl Python extension module for both Python 2 and 3 builds, using pybind11.

fhicl-cpp 4.09.01 (2019/02/07)

fhicl-cpp 4.09.00 (2019/01/30)

This release is the first to support Python 3 builds. However, due to changes in the Python API, the fhicl Python extension module is disabled for Python 3. It is re-enabled as of 4.09.02.

Breaking changes

All uses of boost::any have been replaced with std::any. Any users that have provided fhicl::detail::(encode|decode) overloads should change their function signatures to use std::any instead (with the '#include <any>' header dependency).

fhicl-cpp 4.08.01, 2019/01/29 (art suite 3.01.01, art suite 3.01.02)

fhicl-cpp 4.08.00, 2018/09/25 (art suite 3.01.00)

  • C++17 only

fhicl-cpp 4.07.00, 2018/06/05 (art suite 3.00.00)

fhicl-cpp 4.06.10, 2019/06/07 (art suite 2.13.00)

  • C++17 only

fhicl-cpp 4.06.09, 2019/01/22 (art suite 2.12.00, art suite 2.12.01)

fhicl-cpp 4.06.08, 2018/05/04 (art suite 2.11.02, art suite 2.11.03, art suite 2.11.04, art suite 2.11.05)

  • Encapsulating tables declared inline and inside of prologs are no longer propagated to the fully processed configuration (resolves issue #19773).

fhicl-cpp 4.06.07, 2018/03/30 (art suite 2.11.00, art suite 2.11.01)

  • Support GCC 7.3 with C++17 enabled.

fhicl-cpp 4.06.06, 2018/03/16 (art suite 2.10.04)

fhicl-cpp 4.06.05, 2018/01/23 (art suite 2.10.01, art suite 2.10.02, art suite 2.10.03)

fhicl-cpp 4.06.04, 2018/01/22 (art suite 2.10.00)

  • Changes to support Clang 5.0.1.

fhicl-cpp 4.06.03, 2017/11/07 (art suite 2.09.02, art suite 2.09.03, art suite 2.09.04, art suite 2.09.05, art suite 2.09.06)

fhicl-cpp 4.06.02, 2017/10/17 (art suite 2.09.00, art suite 2.09.01)

The fhiclcpp types system has undergone some changes for ease of understanding and for better conceptual clarity with respect to the C++ standard template library:

  • The dtype type alias has been replaced with the more explicit default_type type alias for any templates that support default values.
  • The rtype type alias has been replaced with the value_type type alias.

fhicl-cpp 4.06.01, 2017/08/30 (art suite 2.08.03, art suite 2.08.04)

fhicl-cpp 4.06.00, 2017/08/01 (art suite 2.08.00, art suite 2.08.01, art suite 2.08.02)

  • The AllowedConfiguration and ConfigurationTable utilities (formerly of art) are now part of fhicl-cpp.
  • The deprecated fhicl::parse_value function has been removed.
  • Any fhicl::(Optional)Table objects that specify a conditional, must now specify an explicit MaybeUseFunction (e.g.):
      Table<Config> table{Name("some_table", 
                          Comment("Use only if condition X is true."), 
    -                     [this]{...}};
    +                     MaybeUseFunction([this]{...})};
    This requirement applies only to fhicl::(Optional)Tables and none of the other fhicl-cpp types.

fhicl-cpp 4.05.01, 2017/05/23 (art suite 2.07.01, art suite 2.07.02, art suite 2.07.03)

  • Add FHiCL python module (supplied by Herb Greenlee of MicroBooNE) that allows users to access a FHiCL document as a native Python dictionary (e.g.):
    import fhicl
    pset = fhicl.make_pset('my_document.fcl')
    fhicl.pretty(pset) # print dictionary
    Setting up the fhiclcpp UPS product automatically updates the PYTHONPATH environment variable so that the fhicl Python module can be imported (resolves issue #10828).
  • Make fhicl::ParameterSet::walk a public member function, where users can supply a fhicl::ParameterSetWalker object that can be used to traverse a ParameterSet object.
  • Adjust fhicl::ParameterSetRegistry implementation and interface to enable thread-safe access and insertion into it.

fhicl-cpp 4.04.00, 2017/03/07 (art suite 2.06.03)

  • Allow fhicl::Comment(std::string const&) construction

fhicl-cpp 4.03.02, 2017/02/08 (art suite 2.06.01, art suite 2.06.02)

fhicl-cpp 4.03.01, 2017/02/07 (art suite 2.06.00)

  • Add SearchAllowedConfiguration walker, enabling the traversal of a fhicl::(Optional)Table<...> to determine if it supports a specific key. (Actually included in tagged version 4.03.00, but that version is not used elsewhere.)

fhicl-cpp 4.02.00, 2016/10/19 (art suite 2.05.00, art suite 2.05.01)

  • Improvements to fhicl::Table<T> printout.
  • Fixed memory leak due to missing virtual destructor.
  • Removed deprecated ParameterSet::get_(pset_)keys() functions.
  • Minor bug fixes.

fhicl-cpp 4.01.00, 2016/09/14 (art suite 2.04.00, art suite 2.04.01)

  • Add second template parameter to fhicl::Table, specifying a keys-to-ignore struct (see the documentation; resolves issue #11950).
  • Provide fhicl::KeysToIgnore<T...> template for concatenating multiple structs that encapsulates keys to ignore during configuration validation.

fhicl-cpp 4.00.01, 2016/08/08 (art suite 2.02.02, art suite 2.03.00)

fhicl-cpp 4.00.00, 2016/08/02 (art suite 2.02.00, art suite 2.02.01)

  • Allow multiple invocations of @protect_ignore: on same name (resolves feature #12877). This change is incorporated in version 4 of the FHiCL language.
  • Introduce the (Optional)DelegatedParameter class, allowing configuration validation to be deferred or suspended for the declared parameter (see here).
  • Improve diagnostic messages for parse errors encountered in prolog declarations (resolves feature #13363).

fhicl-cpp 3.20.01, 2016/06/07 (art suite 2.01.01, art suite 2.01.02)

fhicl-cpp 3.20.00, 2016/06/06 (art suite 2.01.00)

  • Provide operator<< free function for fhicl::Table<T> (resolves issue #12356).
  • Accommodate different parsing option for artdaq use cases.

fhicl-cpp 3.19.00, 2016/05/16 (art suite 2.00.01)

  • Remove errant comma when calling ParameterSet::to_indented_string on ParameterSets that contain nested sequences (resolves issues #12062 and #12434).

fhicl-cpp 3.18.02, 2016/01/27 (art suite 1.18.05)

  • Remove inlining of std::regex calls (resolves issue #11485)

fhicl-cpp 3.18.01, 2016/01/11 (art suite 1.18.04)

  • Fix treatment of conditional parameters that have default values.

fhicl-cpp 3.18.00, 2015/12/21 (art suite 1.18.03)

fhicl-cpp 3.13.01, 2015/12/08 (art suite 1.18.02)

  • Remove erroneous 'template <>' specifications in coding.h.

fhicl-cpp 3.13.00, 2015/10/21 (art suite 1.18.00, art suite 1.18.01)

  • Remove use of cpp0x.

fhicl-cpp 3.12.09, 2016/01/26 (art suite 1.17.07)

  • Remove inlining of std::regex calls (resolves issue #11485)

fhicl-cpp 3.12.08, 2016/01/11 (art suite 1.17.06)

  • Fix treatment of conditional parameters that have default values.

fhicl-cpp 3.12.07, 2015/12/14 (art suite 1.17.05)

  • Remove erroneous 'template <>' specifications in coding.h.
  • Enhancements to configuration validation and description:
    • TupleAs template, which allows users to convert FHiCL sequences to nearly arbitrary C++ types (resolves issue #8962).
    • Conditional configuration, where configuration parameters are expected only if the values of previously validated parameters satisfy some condition (resolves issue #9079).

The above additions to the configuration validation facility necessitated a few breaking changes:

  • [ Breaking change ] The order of construction arguments is now constrained so that the Comment argument (if present), must precede the default value.
    // e.g. Atom<T>
      explicit Atom(Name&&);
      explicit Atom(Name&&, Comment&&);
      explicit Atom(Name&&, Comment&&, std::function<bool()> maybeUse);
      explicit Atom(Name&&, T const& t);
    - explicit Atom(Name&&, T const& t, Comment&&);
      explicit Atom(Name&&, Comment&&, T const& t);
      explicit Atom(Name&&, Comment&&, std::function<bool()> maybeUse, T const& t);
    This is now true in general for all fhiclcpp types: the order of constructor arguments is not flexible.
  • [ Breaking change ] The constructor signatures have changed for fhicl::Sequence and fhicl::Tuple types that accept default values:
    // Unbounded sequences
    - Sequence<int> nums { Name("nums"), Sequence<int>{1, 2, 3} };
    + Sequence<int> nums { Name("nums"), std::vector<int>{1, 2, 3} };
      Sequence<int> nums { Name("nums"), {1, 2, 3} };
    // Bounded sequences
    - Sequence<double,3u> offset { Name("offset"), Sequence<double,3u>{1.4, 25., 1.3e-2} };
    + Sequence<double,3u> offset { Name("offset"), std::array<double,3u>{1.4, 25., 1.3e-2} };
      Sequence<double,3u> offset { Name("offset"), {1.4, 25., 1.3e-2};
    // Heterogeneous sequences
    - Tuple<int,double> pair { Name("pair"), Tuple<int,double>{3, 4.5} };
    + Tuple<int,double> pair { Name("pair"), std::tuple<int,double>{3, 4.5} };
      Tuple<int,double> pair { Name("pair"), {3, 4.5} };
    The corresponding changes exist also for objects constructed with a Comment&& argument. Note that the brace-enclosed initializers are still accepted.
  • [ Breaking change ] The Sequence<T>::make_empty() facility for unbounded sequences has been removed as it is no longer necessary:
    - Sequence<string> people { Name("people"), Sequence<string>::make_empty() };
    + Sequence<string> people { Name("people"), std::vector<string>{} };

fhicl-cpp 3.12.06, 2015/10/21 (art suite 1.17.00, art suite 1.17.01, art suite 1.17.02, art suite 1.17.03, art suite 1.17.04)

fhicl-cpp 3.12.04, 2015/10/05 (art suite 1.16.02)

fhicl-cpp 3.12.03, 2015/09/29 (art suite 1.16.00, art suite 1.16.01)

  • SQLite upgraded to

fhicl-cpp 3.12.02, 2015/09/08

  • Repair stale memory access when printing out fhiclcpp::detail::validationException message.

fhicl-cpp 3.12.00, 2015/09/03

  • [ FHiCL validation ] Change function name Table<T>::print_reference to Table<T>::print_allowed_configuration (including nested fhicl::detail function calls).

fhicl-cpp 3.11.00, 2015/08/26

  • Incorporate --parsable program option into fhicl-dump (see 3.10.00 release notes).
  • [ FHiCL validation ] Rename fhicl::Key to fhicl::Name

fhicl-cpp 3.10.00, 2015/08/25

  • [ Breaking change ] The following function names have been changed
    - fhicl::ParameterSet::get_keys()
    - fhicl::ParameterSet::get_pset_keys()
    + fhicl::ParameterSet::get_names()
    + fhicl::ParameterSet::get_pset_names()
    Resolves issue #9879. A warning/message will be emitted at compile-time if the deprecated name is used.
  • The printout produced using fhicl::ParameterSet::to_indented_string has been adjusted into a format that is more maintainable. The following changes related to to_indented_string have also been implemented:
    • The original default behavior has been restored--i.e. a call to to_indented_string with no arguments provided yields a printout with no annotations
    • There is now a parsable printout option, where any notations are placed on the line preceding a given FHiCL name assignment, not at the end of the line containing the assignment.

fhicl-cpp 3.09.00, 2015/08/18

  • New helper application: The program fhicl-dump now exists so that users can view the final form of a FHiCL document, corresponding to the full processing of an input FHiCL file. To see the program options, type fhicl-dump --help.
  • [ FHiCL validation ] Change Sequence<T>::empty() to Sequence<T>::make_empty().

fhicl-cpp 3.07.00, 2015/07/02

  • [ Technology preview ] Validation and description features are now available for a user-provided FHiCL configuration. Implementing this feature introduces the concept of fhicl-cpp types, which include:
    • fhicl::Atom<T>
    • fhicl::Sequence<T>
    • fhicl::Sequence<T,std::size_t>
    • fhicl::Tuple<T...>
    • fhicl::Table<T>

 For information as to how to use this feature see this documentation.

  • Individual sequence element access: Users may now retrieve individual sequence elements using fhicl::ParameterSet::get. Implementing this feature allows users to access values from arbitrarily complicated FHiCL structures. For example, consider the following FHiCL configuration:
    t: {
       s: [ u, { v: [w,x,y,z] } ]
    The character 'y' can be retrieved in fhicl-cpp through:
    char y = pset.get<char>("t.s[1].v[2]");
    where the pset object corresponds to the full document, which contains 't'.

fhicl-cpp 3.06.01, 2015/07/01 (art suite 1.15.00, art suite 1.15.01, art suite 1.15.02)

fhicl-cpp 3.06.00, 2015/06/30

  • Implement issue #8655: append PROLOG definition.
    This feature has been implemented by adding the concept of, "modified bindings." The only binding operator up to now has been : -- binding a FHiCL value to a name. There are now two modified bindings, @protect_ignore: and @protect_error:. Important notes:
    • These are single symbols: no daylight is permitted between the initial @ and the word, or between the word and the trailing :.
    • @protect_ignore: has the effect of causing subsequent assignments to the specified parameter to be ignored, to within the constraints noted below.
    • @protect_error: has the effect of causing subsequent assignments to the specified parameter to be an error, for which an exception shall be thrown giving as much information as possible to enable resolution of the problem.
    • @protect_error: is defined as being a higher level of protection than @protect_ignore: for the purposes of priority.
    • During assignment, a modified protection level shall be inherited from an enclosing parameter (e.g. if the nested parameter has no specified protection), except that it shall be an error to specify a protection level lower than that of an enclosing parameter.
    • It shall be an error to use a binding modifier for an assignment to a FHiCL parameter that already has a value.
    • A non-prolog item shall always shadow a prolog item at the top level: e.g.:
      a : { b : { c : 37 } }
      a.x : 12
      shall be equivalent to:
      a : { x : 12 }
      This is a restatement of preexisting behavior, not a change.
    • Use of @erase at a higher level than a protected item shall ignore the protection of the item: e.g.:
      a : { b : { x @protect_ignore: 7 } }
      a : @erase
      is equivalent to an empty definition, whereas for:
      a @protect_ignore: { b : { x : 7 } }
      a : @erase
      the second line shall be ignored. This behavior was determined to be most consistent with existing behaviors.
    • Similarly, a local or fully-qualified override shall honor protection, whereas a nested replacement shall not. For example, as a line following:
      a : { b : { c @protect_error: 37 } }
      a.b.c : 37
      shall cause an error, whereas:
      a : 12
      a : { b : { c : 43 } }
      shall not. The fully-specified:
      a : {
        b : {
          c @protect_error: 37
          d : 31
          c : 43
      where the attempted override is local, shall be an error.
    • Since particularly @protect_ignore: could cause issues for manipulations in code at the level of fhicl::intermediate_table, the function
      fhicl::extended_value & fhicl::intermediate_table::operator [] (std::string const & name)
      has been replaced in the public interface by:
      fhicl::extended_value * fhicl::intermediate_table::locate(std::string const & name)
      which will return nullptr if the specified item may not be updated, and:
      fhicl::extended_value & fhicl::intermediate_table::update(std::string const &name)
      which will throw an exception in this case.

fhicl-cpp 3.05.02, 2015/05/05 (art suite 1.14.01, art suite 1.14.02, art suite 1.14.03)

fhicl-cpp 3.05.01, 2015/05/01 (art suite 1.14.00)

  • New retrieval facilities for std containers: It is now possible to retrieve std::tuple, std::array, and std::pair objects from FHiCL parameter sets:
    pset.get<std::pair <type1,type2>      >("pair" );
    pset.get<std::array<type1,4u>         >("array");
    Resolves feature #5582.
  • New retrieval facilities for CLHEP vectors: Users can now decode FHiCL sequences into various CLHEP objects:
    pset.get<CLHEP::Hep2Vector      >(...);
    pset.get<CLHEP::Hep3Vector      >(...);
    N.B. Using the CLHEP retrieval facilities requires including art/Utilities/ParameterSetHelpers/CLHEP_ps.h in the relevant source code. Resolves feature #3202.
  • FHiCL parameter tracing: A facility now exists to track the filename and line number of the origin of the FHiCL parameters (or where they were overridden). This involves:
    • New function: fhicl::ParameterSet::get_src_info(key) prints "filename:line-number"
    • Modified function: fhicl::ParameterSet::to_indented_string(unsigned initial_indent_level = 0, bool annotate = true) now accepts an annotation flag that will provide the source information (based on call to get_src_info) for the given ParameterSet instance and all nested parameters therein.
      Resolves feature #7788.
  • Improved error diagnostics upon parameter retrieval failure: In the event that fhiclcpp is unable to convert the FHiCL parameter to the requested type, more helpful information is provided that tells the user which parameter conversion failure occurred. See feature #2672 (resolved) for details.

fhicl-cpp 3.03.00, 2015/02/13 (art suite 1.13.00, art suite 1.13.01, art suite 1.13.02)

  • Support for e7 qualifier.
  • SQLite upgraded to
  • Parsing is more strict: whitespace is no longer allowed either side of the :: for directives @local, @erase, @id, @sequence and @table.
  • Users can now provide their own void decode(boost::any const &, T &) and X encode(T const &) (with X as ps_atom_t, ps_sequence_t) in the same namespace as T, and it will be used by fhicl::ParameterSet::get() and fhicl::ParameterSet::put() respectively according to the rules of Argument-dependent Lookup.
  • New function bool fhicl::ParameterSet::is_nil(std::string const & key).
  • Implement issue #4452 - fix misbehavior of fhicl::ParameterSet::put() and fhicl::ParameterSet::insert():
    • fhicl::ParameterSet::insert() is now private.
    • fhicl::ParameterSet::put() now throws on failure to insert due to existing key.
    • New public function fhicl::ParameterSet::put_or_replace() allows value replacement if key already exists.
    • New public function fhicl::ParameterSet::put_or_replace_compatible() allows value replacement on existing key, but throws if replacement value is not of the same FHiCL type (atom, sequence or table) as the existing value. Replacement of and by nil is always allowed.
  • Explicitly enforce the implicit requirement that the key argument to fhicl::ParameterSet::putXXX() be local (not nested per x.y.z). Nested keys are handled correctly for fhicl::ParameterSet::getXXX().

fhicl-cpp 3.02.00, 2014/12/16

  • New function bool fhicl::ParameterSet::has_key(std::string const & key).

fhicl-cpp 3.01.03, 2014/11/06 (art suite 1.12.04, art suite 1.12.05)

fhicl-cpp 3.01.02, 2014/09/15 (art suite 1.12.00, art suite 1.12.01, art suite 1.12.02, art suite 1.12.03)

  • Bug #6935: Fix SQLite3 minimum version to reflect actual interface requirements.

fhicl-cpp 3.01.01, 2014/08/28 (art suite 1.11.02, art suite 1.11.03)

fhicl-cpp 3.01.00, 2014/08/25 (art suite 1.11.00, art suite 1.11.01)

  • Technology preview: new executable fhicl-write-db: read a FHiCL file and export its contents to a standalone SQLite DB file.

fhicl-cpp 3.00.01, 2014/08/19

  • e6, C++1y support, migrate to cetbuildtools 4.

fhicl-cpp 3.00.00, 2014/08/01

  • ParameterSetRegistry is now its own specialized class, rather than being a typedef of cet::registry_via_id. It carries an in-memory SQLite backing DB to avoid having to parse incoming parameter sets unless they are specifically requested. Other features of ParameterSetRegistry distinct from that originally in registry_via_id:
    • static void importFrom(sqlite3 * db)
      Import parameter sets from a DB.
    • static void exportTo(sqlite3 * db)
      Export all parameter sets to a DB.
    • static void stageIn()
      Stage all parameter sets from backing DB into the registry proper as art::ParameterSet (requires parsing).
    • In order to support unordered inserts of parameter sets containing @id:: references, an overloaded put() function supports the provision of the ID rather than requiring it to be calculated from the fully-expanded parameter set.
  • New keyword: @erase.
    Cause FHiCL to forget a parameter. Example:
    physics.analyzers.myAnalyzer.numHistograms: @erase
    An attempt to get<>() this parameter will behave as if it had never been defined: a default will be used if specified, otherwise an exception shall be thrown. This is distinct from the behavior of parameters whose value is @nil, which attempts to get<>() will cause an exception to be thrown unconditionally.
  • New keyword: @table::.
    Reference keyword causing the referenced table to be expanded in-place. Valid only in table contexts, including top-level and prologs. Example:
    tfrag: { b: 7 c: 8}
    physics.analyzers.myAnalyzer: {
    will cause parameters b and c to be defined in the myAnalyzer configuration. Usual overriding rules apply: it would be as if parameters b and c were actually defined at the location of the reference.
  • New keyword: @sequence::
    Reference keyword causing the referenced sequence to be expanded in-place. Valid only in sequence contexts (between [ and ]). Example:
    sfrag: [ 3, 4, 5 ]
    physics.analyzers.myAnalyzer: {
      numbers: [ 1, 2, @sequence::sfrag, 6, 7 ]
    will cause physics.analyzers.myAnalyzer.numbers to consist of the numbers 1 through 7, in order. As above, usual overriding rules apply.

fhicl-cpp 2.20.00, 2014/06/20

  • New keyword @id::<hash> for delayed reference to saved parameter sets. This is distinct from @db::, which is expanded immediately upon parsing. @id:: is intended for use during generation of persistent parameter sets for insertion into the DB rather than by users in FHiCL files.
  • New functions bool ParameterSet::is_key_to_{table,sequence,atom}().

fhicl-cpp 2.19.05, 2014/07/16 (art suite 1.10.00b)

fhicl-cpp 2.19.04, 2014/06/10 (art suite 1.10.00, art suite 1.10.00a)

fhicl-cpp 2.19.01a, 2014/07/18 (art suite 1.09.04)

  • No default FHiCL file path, since no FHiCL files for installation.

fhicl-cpp 2.19.01, 2014/05/06 (art suite 1.09.03)

  • Bug #6052: FHiCL type traits is_int, is_uint and is_numeric misbehave under Mac OS X.

fhicl-cpp 2.19.00, 2014/04/04

  • Improvements to appearance of indented ParameterSet output.

fhicl-cpp 2.18.03, 2014/03/21 (art suite 1.09.02)

fhicl-cpp 2.18.02, 2014/03/14 (art suite 1.09.00, art suite 1.09.01)

fhicl-cpp 2.18.01, 2014/03/11

  • Partial support for ICC (bugs present in 14.0.2).

fhicl-cpp 2.18.00, 2014/02/19

  • Support for GCC 4.8.2.

fhicl-cpp 2.17.12, 2013/10/15 (art suite 1.08.09, art suite 1.08.10)

fhicl-cpp 2.17.11 (art suite 1.08.06, art suite 1.08.07)

fhicl-cpp 2.17.10 (art suite 1.08.04, art suite 1.08.05)

fhicl-cpp 2.17.09 (art suite 1.08.03)

fhicl-cpp 2.17.07

  • Finish Mac OS X support: add libraries required for closed link.

fhicl-cpp 2.17.06 (art suite 1.08.01, art suite 1.08.02)

fhicl-cpp 2.17.04

  • Toward Mac OSX support: remove linux-ism ulong.

fhicl-cpp 2.17.03

  • Support for GCC 4.8.1.

fhicl-cpp 2.17.02 (art suite 1.03.06, art suite 1.03.07, art suite 1.03.08, art suite 1.04.00, art suite 1.05.00, art suite 1.06.00, art suite 1.07.00, art suite 1.07.01)

fhicl-cpp 2.17.01 (art suite 1.02.01, art suite 1.02.02, art suite 1.02.03, art suite 1.02.04, art suite 1.02.05, art suite 1.02.06, art suite 1.02.07, art suite 1.03.00, art suite 1.03.01, art suite 1.03.02, art suite 1.03.03, art suite 1.03.04, art suite 1.03.05)

fhicl-cpp 2.17.00 (art suite 1.02.00)

  • Recognize binary and hex numbers with "0b" and "0x" respectively.
  • Correct canonicalization of char const *.
  • New get(), put() interface to intermediate_table to improve ease of post-processing. Also erase(), putEmptyTable(), putEmptySequence(), putNil().
  • Use @nil to represent nil instead of nil.
  • encode() will now do the canonicalization for floating point numbers.

fhicl-cpp 2.16.12 (art suite 1.01.00, art suite 1.01.01)

  • First C++2011-only release.
  • Bug #2792: Incorrect canonicalization of true, false and infinity under certain circumstances.

fhicl-cpp 2.16.08 (art suite 1.00.12)

  • Improve exception information.

fhicl-cpp 2.16.07 (art suite 1.00.10, art suite 1.00.11)

  • Build against (and require) Boost 1.49.0.

fhicl-cpp 2.16.03 (art suite 1.00.07, art suite 1.00.08)

fhicl-cpp 2.16.01 (art suite 1.00.06)

  • Fix minor parsing-order buglet.
  • Build against (and require) Boost 1.47.0.

fhicl-cpp 2.15.04 (art suite 1.00.04, art suite 1.00.05)

  • Enable prof and opt builds.

fhicl-cpp 2.15.03 (art suite 1.00.00, art suite 1.00.01)

  • Improve diagnostics sensitivity and adjust code for clean compilation.

fhicl-cpp 2.15.02

  • First build against GCC 4.6.

fhicl-cpp 2.15.01 (art suite 0.07.16)

  • New valueless (i.e. nil) insertion interface ParameterSet::put(std::string const& key).

fhicl-cpp 2.15.00

  • Fix integral conversion bug #1845.
  • Fix nested overridden values bug #1847.
  • Prevent conversions from nil.

fhicl-cpp 2.14.00

  • New forwarding header "fhiclcpp/fwd.h".
  • Allow overriding prolog entries with non-prolog entries by the same name.

fhicl-cpp 2.13.00

  • New ParameterSet::erase(std::string const& key).

fhicl-cpp 2.12.10 (art suite 0.07.12, art suite 0.07.13, art suite 0.07.14, art suite 0.07.15)

fhicl-cpp 2.12.09 (art suite 0.07.10, art suite 0.07.11)

fhicl-cpp 2.12.06

  • New ParameterSet::to_indented_string().

fhicl-cpp 2.12.04 (art suite 0.07.06, art suite 0.07.07, art suite 0.07.08, art suite 0.07.09)

fhicl-cpp 2.12.03 (art suite 0.07.03, art suite 0.07.04, art suite 0.07.05)

fhicl-cpp 2.12.02 (art suite 0.07.00, art suite 0.07.02)

fhicl-cpp 2.12.01 (art suite 0.06.02, art suite 0.06.03)

  • Support user-defined interpretation of values via new ParameterSet::get(std::string const& key, T convert(Via const&)) and friends.

fhicl-cpp 2.12.00

  • Support deep name lookup in nested parameter sets.