swirl
Guide to OmniMark 8   OmniMark home
docs home 
IndexConceptsTasksSyntaxLibrariesLegacy LibrariesErrors
 
Prerequisite Concepts      

What's new

What's new in OmniMark 8.2.0

New in the OmniMark 8.2.0 compiler

Actions signal throw and signal rethrow have been added for communicating out-of-bound information between coroutines.

A string sink function call can now be used with a referents-allowed modifier. Any referent output to the string sink function must belong to a nested-referents scope entirely contained within the scope of the string sink function call.

The syntax define input function now triggers a compiler warning. The preferred syntax is define string source function.

Attribute handling and XML namespace processing has been optimized out if it is not needed by the program.

submit can now be used in a markup-error rule.

do xml-parse and do sgml-parse can now be used in find-start, find-end, external-text-entity, and markup-error rules.

sgml-in and sgml-out can now be used in markup-error rules.

A global variable declaration can now be prefixed by the keyword domain-bound.

The restriction on using output-to action on a string sink coroutine has been relaxed. Now output-to is only disallowed on a string sink function call itself, not on a reference to the created string sink.

New in the OmniMark 8.2.0 Runtime

OmniMark now outputs a function call stack trace after a run-time error.

The "%c" format item is now streaming: submit "%c", for example, will run the content-processing code concurrently with the find rules.

New in the OmniMark 8.2.0 libraries and external API

A new process execution library module, OMPROCESS, has been introduced. It provides a mechanism to execute a program outside of OmniMark, to control the input to this program, and process the output from this program. OMPROCESS supercedes OMSYSOUT, which is, however, still available for backwards compatibility.

The function db.is-null has been added to the OMDB function library.

The OMUTF8 module now exports a byte-order mark constant.

New in OmniMark 8.1.0

The behavior of the next group is action has changed in coroutines: the action now modifies the current group of the parent coroutine, unless it is protected by a save groups.

The behavior of coroutines has changed. A string source coroutine now terminates when the last reference to it is dropped, whereas string sink coroutines receive a value-end on their #current-input and continue running normally.

Content modifiers can now be specified on #current-output.

The keyword output can no longer be used as a synonym for #main-output.

The is attached test can now be applied to value string sink arguments.

The flush action can now be applied to #current-output.

string sink functions are no longer required to consume their entire #current-input.

Multiple instances of #current-output can now be specified in a single string sink expression.

The drop and take operators now stream better. As a consequence, they do not rewind their input in the failure case.

OmniMark's run-time memory footprint has been reduced.

The -ftrace command-line option now tracks coroutines as well as nested function calls.

A new warning class, performance, has been added. This class is used to identify uses of language constructs that may negatively affect the performance of a user's program.

A new warning option, -warning-summary, has been added. It is used to suppress a particular class of warnings, generating instead a summary upon termination.

New in OmniMark 8 .0.1

Single-item string constants are inlined at compile time.

#current-input in a string sink function can be passed as a string source argument to a function.

The -term option can now be used without specifying any input file.

do select action now accepts the as alias specification syntax.

New in OmniMark 8

stream shelves are now passable as write-only arguments to a function.

The void action has been introduced. It allows an expression to be evaluated purely for its side-effects.

A catch can now take modifiable and write-only arguments, as well as read-only and value arguments.

Pattern matching operations have been optimized to improve run-time performance.

Certain markup rules have been optimized to improve run-time performance.

The submit action can now be performed from a markup-error rule.

@<item number> and item <item number> have been deprecated as syntax for item indexers; [<item number>] should be used instead. A warning is now emitted when the deprecated forms are encountered.

^ <key value> and key <key value> have been deprecated as syntax for key indexers; {<key value>} should be used instead. A warning is now emitted when the deprecated forms are encountered.

The domain-free modifier is now deprecated. Where it appears, it has no effect. All streams are domain-free. A warning is emitted when the modifier is encountered.

The set action now evaluates its right-hand side argument first, then its left-hand side. All other actions and expressions are evaluated left-to-right, depth-first.

Element names in element context tests (parent is, ...) can now be expressions. The tilde (~) is used to introduce an expression that generates an element name.

The string data type has been introduced. It should be used instead of stream when the shelf item is always attached to a buffer.

The input and external source function types have been deprecated in favour of the new string source function type. A warning is emitted when the deprecated forms are encountered.

The external output function type has been deprecated in favour of the new external string sink function type. A warning is emitted when the deprecated form is encountered.

The string sink function type has been introduced for internal functions, as well as external functions. A function of type string is executed as a coroutine with the context that feeds data to it.

The value source external function argument type has been deprecated in favour of the new value string source function argument type. A warning is emitted when the deprecated form is encountered.

The value string source function argument type has been introduced for internal functions, as well as external functions. A function of type string source is executed as a coroutine with the context that is feeding data to.

The value output external function argument type has been deprecated in favour of the new value string sink function argument type. A warning is emitted when the deprecated form is encountered.

The value string sink function argument type has been introduced for internal functions, as well as external functions.

The keyword prefix-function was never documented as an alternative to the function keyword when defining an overloaded function. It has been removed from the language. Programs that use the keyword prefix-function will no longer compile.

A new form of module has been introduced to better support circular dependencies, and to allow separation of interface from implementation.

The operator forms of new and new? have been generalized: wherever a shelf item reference can occur, the operators can be used.

Literal values for shelves can now be supplied wherever shelf references can be specified, in addition to their old use following the initial keyword of a shelf declaration.

A private overriding of a function can now be made on a private type.

elsewhere can now be used on global shelf declarations.

The syntax for the predeclaration of record types has been generalized.

Predeclared record types can now be extended.

An overriding function definition can now appear before the definition it overrides.

Functions of type input now co-routine in all contexts. (They used to be limited to co-routining only when invoked from a markup parse.)

The share name for a shared module can now be an arbitrary (constant) string.

The new shelf reference operator can be followed by a ?, which allows the operation to proceed if the shelf item being created already exists. The new? form of the new operator requires a key, and does not accept an insertion point.

An optional function argument can be passed down to a function that takes an optional argument, whether or not the argument was specified.

The construct unanchored <pattern> is deprecated; use any** <pattern> instead.

New in the libraries of Omnimark 8

The omxerces library has been updated to use Xerces 2.7.0

The omdb_sedna extension to the omdb library has been introduced. It allows OmniMark programs to access a SEDNA XML database server via the omdb interface.

Support for Oracle 8 client installations has been dropped, as has the corresponding db.open-oci8 function

Support for Oracle 9i and 10g client installations has been added on supported platforms, as have the corresponding db.open-oci9i and db.open-oci10g functions.

Dynamic (or scrollable) cursor support has been added to the OCI backends for Oracle 9i and 10g.

The default cursor type is now static instead of dynamic, which is a change of behavior for the ODBC backend.

db.move-dynamic-record has been created which provides the functionality of the old db.move-record; db.move-record no longer takes optional 'by' or 'to' parameters. This was done so that any OmniMark code which assumes that cursors are dynamic by default will no longer compile (instead of providing an error at runtime). Any such code needs to be changed as follows:

  1. change the move-record call to move-dynamic-record
  2. add the optional 'cursor db.dynamic-cursor' to the db.query or db.compile-statement call which leads to the creation of that result set

The new Oracle 10g datatypes binary_float and binary_double are now supported.

The new Oracle 9i datatype XMLType is now supported in db.table operations by treating it as a CLOB. In queries, compiled statements and procedures, the programmer is responsible for converting to and from XMLType in their SQL statements.

Prerequisite Concepts
   What's Changed
   What's fixed
   What was new
   What was fixed
 
   
 

Top [ INDEX ] [ CONCEPTS ] [ TASKS ] [ SYNTAX ] [ LIBRARIES ] [ LEGACY LIBRARIES ] [ ERRORS ]

OmniMark 8.2.0 Documentation Generated: March 13, 2008 at 3:25:49 pm
If you have any comments about this section of the documentation, please use this form.

Copyright © Stilo International plc, 1988-2008.