[Omake] Announcing OMake 0.9.8

Aleksey Nogin nogin at metaprl.org
Mon Dec 11 21:04:26 PST 2006


We are proud to announce the latest release of the OMake Build System -
OMake 0.9.8.

OMake 0.9.8 is a major feature enhancements and bugfixes release; it is
not fully backwards-compatible. The changes in this release include:

 * The main change in this release is that the OMake values will now be
   converted into the shell command lines directly (all the previous
   versions of OMake should first "flatten" the value into a string and
   then perform sh-like parsing of the resulting string). In particular,
   this means that:
      + All the special symbols in files and directory values will be
        preserved.
      + All the spaces inside the array elements will be preserved.
      + All the special symbols in OMake-quoted values ($"..." and
        $'...') will be preserved.
      + If  the first element of the command line is a file value,
        neither PATH- nor alias-expansion will be performed. Note -
        there will also be no alias-expansion if the executable value
        contains quoted parts or starts with a \.
      + The Shell. aliases will now receive the values passed on the
        shell command line as is, not the string-expanded version. Also,
        if some of the arguments are the result of a glob-expansion, the
        alias function will receive the appropriate file values, not the
        strings.
      + OMake 0.9.8 will not be fully backwards-compatible with the
        earlier releases.
 * Major redesign of the OMake documentation (using Hevea).
      + The documentation is significantly expanded, examples added,
        bugs fixed.
      + There  are  now  a number of indices, including a index of
        variables, an index of functions, and an overall index.
 * OCaml.om improvements:
      + Implemented a new approach to computing the dependencies in
        OCaml projects in OMake. In this approach a special version of
        ocamldep  is used to only extract the list of the external
        modules a file depends on and then OMake is used to map those
        modules  to files in the include path. This eliminates the
        "standard" deficiency of having to generate all the relevant
        OCaml source files before ocamldep is called. This feature is
        considered highly expire mental and is disabled by default. Use
        the OCAMLDEP_MODULES_ENABLED variable to enable.
      + Added support for the Menhir parser-generator (experimental).
 * C.om improvements:
      + Changed the CProgram function to consider LIBS to be the actual
        library files (_without_ the extension) that need to be linked
        in.
      + Improved the C scanner rule on Windows.
 * LaTeX.om improvements:
      + BSTINPUTS environment variable joins TEXINPUTS and BIBINPUTS in
        the list of variables initialized from the OMake's TEXINPUTS
        variable.
      + The list of such variables is now configurable (TEXVARS variable
        contains an array of names).
 * More control over the OMake output and verbosity.
      + By default, OMake is now much more silent ("-S --progress" is
        enabled by default when it outputs to a terminal, and "-S" is
        enabled in all other cases).
      + Added a --verbose option that would make OMake very verbose,
        when needed.
      + Added an ability to postpone and/or repeat the rule execution
        output (so that, for example, only the output of the rules that
        fail is printed, or the output of the rules that failed is
        repeated at the end of the omake -k execution). This feature is
        somewhat experimental and might change in the future versions of
        OMake.
      + Added the -o option for better control of OMake verbosity.
 * Added three special .PHONY targets: .BUILD_BEGIN, .BUILD_SUCCESS, and
   .BUILD_FAILURE. .BUILD_BEGIN is built before anything else in your
   project. One of .BUILD_SUCCESS or .BUILD_FAILURE is built when the
   build for your project terminates.
   Note:
      + This feature is experimental and is likely to change in the
        future versions of OMake.
      + If you want to use these targets, you should probably add them
        to your ~/.omakerc, rather than adding them directly to each of
        the projects you work on.
 * OMake will now save the .omakedb periodically, preventing the state
   loss in case the OMake process dies unexpectedly (for example, when
   Cygwin kills OMake after user presses Ctrl-C). The checkpointing
   interval may be configured both at compile time and via the command
   line.
 * The variables such as $< and $@ in rules and % in implicit rules will
   no longer be expanded to strings; instead they will be passed as Node
   ("file") values.
 * Much better handling of the exit function, a number of bugs fixed.
 * Implicit  rules can no longer have target patterns referring to
   another directories.
 * New  functions:  Shell.ln-or-cp,  html-escaped, string-escaped,
   encode-uri, decode-uri, random, find-targets-in-path.
 * Added an ability to turn a string into an input channel. This allows,
   for example, to use an OMake variable as an input to built-in awk
   without having to write it to a temporary file first.
 * New flags added to built-in awk and grep.
 * A large number of other bug fixes and improvements.

For more information on OMake, please visit the OMake Home Page at
http://omake.metaprl.org/

Source and binary packages of OMake 0.9.8 may be downloaded from
http://omake.metaprl.org/download.html. In addition, OMake may be
obtained via the GODI packaging system.

OMake 0.9.8 is still an alpha release. While we have made an effort
to ensure that it is bug-free, it is possible some functions may not
behave as you would expect. Please report any comments and/or bugs to
the mailing list omake at metaprl.org and/or at http://bugzilla.metaprl.org/


More information about the Omake mailing list