Second release candidate for version 0.10

0 views
Skip to first unread message

Gaëtan de Menten

unread,
Jun 11, 2015, 6:27:54 AM6/11/15
to liam2-a...@googlegroups.com

I am pleased to announce that the second release candidate for version 0.10 (0.10.0rc2) of LIAM2 is now available.

There were quite a few fixes since the rc1:

* trying to set a value to an unknown variable in new/clone produces a warning instead of being silently ignored (or even crashing with --debug).

* the new warning messages were not displayed unless --debug was used.

* fixed a problem which made automated tests appear to pass when they actually failed, which made me unaware of the three following bugs.

* fixed the new output: False option.

* fixed void data source (when generating a dataset from scratch).

* updated generate test model to not produce warnings.

Please test this pre-release with your models and report back any problems. If all goes well, the final release will be out on Monday.

Highlights of the 0.10 release are the implementation of while loops and calling
user-defined functions, potentially with arguments. Please also see the
complete release notes below for a potential migration issue concerning code
defined outside of functions/procedures.

More details and the complete list of changes are available below.

This pre-release can be downloaded from:
http://liam2.plan.be/download/LIAM2Suite-0.10.0rc2-win32.zip
http://liam2.plan.be/download/LIAM2Suite-0.10.0rc2-win64.zip
http://liam2.plan.be/download/LIAM2-0.10.0rc2-src.zip

Documentation is available at:

http://liam2.plan.be/documentation/0.10.0rc2/
http://liam2.plan.be/download/LIAM2UserGuide-0.10.0rc2.pdf

As always, *any* feedback is very welcome, preferably on the liam2-users
mailing list: liam2...@googlegroups.com (you need to register to be
able to post).

 

New features
------------

* implemented support for calling user-defined functions
  (previously called procedures) from within user code,
  optionally passing arguments to them and retrieving their return value.
  As a consequence of this, every mention of "procedures" in the documentation
  has been replaced by "functions", including the name of the "procedures"
  logging level which is now deprecated. Closes issue 152.

* implemented while loops (closes issue 151).

* added support for not storing some fields in the output file
  (closes issue 58).

* added support for using the "inf" (infinite) constant.

Miscellaneous improvements
--------------------------

* improved our error handling code to display the (part of the) line where the
  error occurred in more cases and to not strip the traceback (error.log) of
  some important information in the cases where the line was already displayed.

* configured the bundle editor (Notepad++) to display some warning and
  error lines in red in the console log. Additionally, when the error message
  contains a filename and/or a line number (this is currently too rare
  unfortunately), it is now click-able (to jump directly at the file/line).

* defining a process outside of a function has been deprecated because it is
  ambiguous. For example, this code will now trigger a warning and will be
  an error in a future version:

    entities:
        person:
            fields:
                agegroup: int
            processes:
                agegroup: 10 * trunc(age / 10)
    simulation:
        processes:
            - person: [agegroup]

  It should be replaced by (or possibly moved into another existing function):
 

    entities:
        person:
            fields:
                agegroup: int
            processes:
                compute_agegroup:
                    - agegroup: 10 * trunc(age / 10)
    simulation:
        processes:
            - person: [compute_agegroup]

  If this construct was used to have a temporary field (ie the field was not
  declared in the fields section) accessible from several functions, like

    entities:
        person:
            processes:
                tempfield: 0

                func1:
                    tempfield: count()

                func2:
                    otherfield: tempfield + 1

  One should now declare that field with `output: False` instead.

    entities:
        person:
            fields:
                tempfield: {type: int, initialdata: False, output: False}

            processes:
                func1:
                    tempfield: count()

                func2:
                    otherfield: tempfield + 1

  This closes issue 124.

* made bcolz optional (which is only useful for interpolating the dataset
  during import). Thanks to Mahdi Ben Jelloul (pull request 161).

* allow simulations with no processes section (but an init section).

* reworked a few sections of the documentation.

* trying to set a value to an unknown variable in new/clone produces a warning
  instead of being silently ignored (or even crashing with --debug)

Fixes
-----

* fixed end-of-simulation stats when simulating 0 periods (closes issue 158).

* allow overriding (detected) field types of period and id fields in import
  (closes issue 154).

* fixed autodump (broken in 0.9). Note that it is currently incompatible with
  while loops and recursive (user-defined) functions.

 

 



Disclaimer: This e-mail may contain confidential information which is intended only for the use of the recipient(s) named above.
If you have received this communication in error, please notify the sender immediately and delete this e-mail from your system.
Please note that e-mail messages cannot be considered as official information from the Federal Planning Bureau.
Reply all
Reply to author
Forward
0 new messages