CHANGELOG.md in alf-0.9.2 vs CHANGELOG.md in alf-0.9.3

- old
+ new

@@ -1,4 +1,93 @@ +# 0.9.3 / FIX ME + +* New operators (available both in shell and in Lispy DSL) + + * Added MATCHING and NOT MATCHING operators. These operators are useful + shortcuts for the following expressions. + + (matching l, r) := (project (join l, r), [l's attributes]) + (not_matching l, r) := (minus l, (matching l, r)) + + For example: + + # Give suppliers that supply at least one part + (matching suppliers, supplies) + + # Give suppliers that don't supply any part + (not_matching suppliers, supplies) + + * Added RANK operator. The RANK operator is useful for for computing quota + queries, as shown below. See 'alf help rank' for details. + + # Give the three heaviest parts + (allbut (restrict (rank :parts, [[:weight, :desc]], :pos), lambda{ pos < 3 }), [:pos]) + +* Enhancements when using Alf in shell + + * added alf's -r option, that mimics ruby's one (require library before run) + + * When alf is invoked in shell using bin/alf (and only in this case), + ENV['ALF_OPTS'] is used a global options to apply as they were specified + inline: + + % export ALF_OPTS="--env=. --yaml" + % alf show suppliers + + is the same as + + % alf --env=. --yaml show suppliers + + * 'alf --help' now distinguish experimental operators from those coming from + the (much more stable) TUTORIAL D specification. The former should be used + with care as they specification may change at any time. + +* Enhancements when using Alf in Ruby + + * Alf.lispy now accepts any argument recognized by Environment.autodetect; it + obtains its working Environment this way. Among others: + + Alf.lispy(Alf::Environment.folder("path/to/an/existing/folder")) + + is the same as: + + Alf.lispy("path/to/an/existing/folder") + + * Added Relation::DUM and Relation::DEE constants (relations of empty heading + with no and one tuple, respectively). They are also available as DUM and DEE + in Lispy functional expressions. + + * Added a Heading abstraction, as a set of attribute (name, type) pairs + +* Internal enhancements (extension points) + + * The Reader and Renderer classes now accept a Hash of options as third + argument of the constructor (friendly varargs applies there). These options + can be used by extension points. + + * The Environment class now provides a class-based registering mechanism 'ala' + Reader and Renderer. This allows auto-detecting the target environment when + --env=... is used in shell. See Environment.autodetect and + Environment#recognizes? for contributing to this extension point. + + * Internals now rely on Myrrha for code generation. This means that all + datatypes can now be safely used in relations and dumped to .rash files in + particular. + +* Bug fixes + + * Added Relation#allbut, forgotten in two previous releases + * Fixed (join xxx, DEE) and (join xxx, DUM) + * Fixed scoping bug when using attributes named :path, :expr or :block in + Lispy compiled expressions (coming from .alf files) + * Fixed 'alf --yaml show suppliers' that renderer a --text table instead of + a yaml output + * Fixed bugs when using Date and Time attributes with .rash files + * Fixed bugs when using Date and Time attributes in restrict expressions + compiled from the commandline + * Fixed a few bugs when using attribute names that are ruby keywords + (restrict & extend) + # 0.9.2 / 2011.07.13 * Bug fixes * Fixed the "alf show" command (undefined method `chain')