Hi folks, We are finally ready to release the 1.0.0 version of YAQL. It is a huge milestone: the language finally looks the way we initially wanted it to look. The engine got completely rewritten, tons of new capabilities have been added. Here is a brief (and incomplete) list of new features and improvements:
* Support for kwargs and keyword-only args (Py3) * Optional function arguments * Smart algorithm to find matching function overload without side effects * Ability to organize functions into layers * Configurable list of operators (left/right associative binary, prefix/suffix unary with precedence) * No global variables. There can be more than one parser with different set of operators simultaneously * List literals ([a, b]) * Dictionary literals ({ a => b}) * Handling of escape characters in string literals * Verbatim strings (`...`) and double-quotes ("...") * =~ and !~ operators in default configuration (similar to Perl) * -> operator to pass context * Alternate operator names (for example '*equal' instead of '#operator_=') so that it will be possible to have different symbol for particular operator without breaking standard library that expects operator to have well known names * Set operations * Support for lists and dictionaries as a dictionary keys and set elements * New framework to decorate functions * Ability to distinguish between functions and methods * Switchable naming conventions * Unicode support * Execution options available to all invoked functions * Iterators limitation * Ability to limit memory consumption * Can work with custom context classes * It is possible to extend both parser and set of expression classes on user-side * It is possible to create user-defined types (also can be used for dependency injection) * Legacy yaql 0.2.x backward compatibility mode * Comprehensive standard library of functions * High unit test coverage * Delegate and lambda support, including higher order lambdas etc, etc. So, this is a big change. And as it always happens when moving from 0.something to 1.x the breaking changes are inevitable. We have included the "backwards compatibility mode", but it may not address all the possible concerns. So. We have released a release candidate 1 of yaql 1.0.0 on pypi: [1] It includes all the new functionality and is likely to be identical to final release (that's why it is RC after all) and we strongly encourage all the yaql users (Murano and Mistral first of all) to try it and prepare "migration patches" to use it. When the final release is out, we'll update the global requirements to yaql >= 1.0.0, which is likely to break all your gate checks unless you quickly land a migrating patch. Please email us any concerns or contact me (ativelkov) or Stan Lagun (slagun) directly in IRC (#murano) if you need some quick help on yaql 1.0 or migrating from 0.2.x Happy yaqling! [1] https://pypi.python.org/pypi/yaql/1.0.0.0rc1 -- Regards, Alexander Tivelkov __________________________________________________________________________ OpenStack Development Mailing List (not for usage questions) Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev