[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-Announce
mailing list