|
|||||
|
|||||
Prerequisite Concepts | |||||
What's new |
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
.
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.
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.
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.
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.
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.
value-stream
argument type (both for functions and for
catches) has been deprecated in favour of the value string
argument
type. A warning is emitted when value stream
is encountered.
remainder stream
argument type has been deprecated in favor
of the remainder string
argument type. A warning is emitted when
remainder stream
is encountered.
stream
function type has been deprecated in favor of the
string
function type. A warning is emitted when the definition of a
function of type stream
is encountered.
stream
type tests (is attached
, is closed
, has name
, ...) on
value stream
arguments have been deprecated: they are essentially
dead code, and should be removed. A warning is emitted when these
tests are encountered.
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.
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:
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 |
Copyright © Stilo International plc, 1988-2008.