Artemus Release Notes
=====================

5.1.1
-----

 - New features:
   * Function template profiling; if `profile' is set (-p
     in the command-line utility), the `timed_calls' array
     is filled with information about how much time each
     invoked opcode has taken.

5.1.0
-----

 - New features:
   * The new operand `def' allows inline template definitions.
   * The new operand `regex' allows extracting or substituting
     text using regular expressions.
   * Both the exec() and the process() methods accept
     arguments in their calls that can be referenced with
     dollar-prefixed arguments as usual.
   * An `AUTOLOAD' template can be defined to be called
     everytime a template is not found (instead of crashing).

5.0.1
-----

 * The %% keyword returns the full extended hash.
 * Fixed processing of file templates returning 0.
 * A new function template `dump', to dump an expression
   using Data::Dumper.
 * Fixed a bug in processing ARTEMUS_STR.

5.0.0
-----

 * New milestone release. The Artemus language has been
   completely rewritten to be a LISP-like, compiled
   machine. No backward compatibility is provided (other
   than including the old 4.x module in the distribution).
   The new 5.x language is faster, more flexible, less
   cumbersome (for example, there's no need for escaping
   inner blocks that should execute only conditionally)
   and include support for translateable strings.

4.1.3
-----

 * The `foreach' constructor now includes an optional
   4th argument, the _header_, that will be appended
   to the output in case it's different from the
   previous iteration. This code block is expected to
   contain dollar-prefixed arguments.
 * New template function `item', to return an item
   from a colon-separated list given its subscript.
 * Fix `case' comparisons when the variable contains
   carriage returns.
 * Fix loader_func() to correctly process empty
   templates.
 * Unless a very grave bug or vulnerabity is found,
   this will be the last 4.x release; next release
   will jump to the 5.x branch. Please take note that
   this new branch is intentionally incompatible
   with current one. Anyway, the Artemus4.pm module
   and associated tools are planned to be distributed
   with the 5.x series for a very long time.

4.1.2
-----

 * New template function `sort'.
 * New template function `reverse'.
 * Templates can be loaded from external sources by
   using the new `loader_func' argument to new().
 * The Perl module Artemus is now an alias for the
   Artemus4 module, as a way to smooth the future
   transition to version 5. No changes need to be
   done.

4.1.1
-----

 * New template function `case'.
 * New template function `env', to get values from the
   environment.
 * New template function `size', to return the number
   of elements in a colon-separated list.
 * New template function `seq', to generate a sequence
   between two numbers as a colon-separated list.
 * Improved debugging information.

4.1.0
-----

 * New template function `foreach', to implement loops.
 * New template function `set', for assigning a value to
   a variable.
 * New template arithmethic functions `add' and `sub'.
 * New template comparison functions `gt', `lt' and `eq'.
 * New template logical functions `and', `or' and `not'.
 * New template function `random'.
 * Comments can now be included with the {% } markup (they
   are deleted from the final output).
 * Old cruft has been deleted from the script (ftp, makefile
   and sitemap generation).
 * Template parameters are always expanded (instead of short-
   circuiting when one is not found).
 * Artemus markup can be escaped to allow templates being used
   from another ones with being executed first.
