|  | 
 | ||||
|        | |||||
|  | |||||
| Prerequisite Concepts | |||||
| What's fixed | |||||
string sink literal erroneously referred to the production for [void function call], where the
production for [value function call] was meant.
null
character would be truncated, thereby making it inaccessible.
conversion-function from numeric-literal to string.
conversion-function was being silently accepted. A
compile-time warning is now generated where a conversion-function may recurse.
require a record
type was misleading, implying that record types cannot be exported.
constant shelf of
size 0; this is no longer needed.
element names were referred to as GIs in certain error messages.
#current-output at the outermost scope of a string sink function.
this referent could not be used as a string sink in contexts
where this use is unambiguous (e.g., using output as this referent).
-ftrace command-line option was used.
string source to a function accepting an
argument of class read-only would trigger an internal error.
-ftrace option could lead to an internal error in programs
using catch/throw.
string shelf item
appeared in a position where a character class was expected.
referent or file
<filename> appeared in one of the branches of the conditional
operator, which in turn appeared in a string sink context.
open ... as applied to a string sink function predeclared with
elsewhere would cause an internal error.
overriding of a dynamic function for a type that is not visible.
referents, indexed by item number, i.e.,
    output "d" % item of referents[1] || "%n"
catch was being referred to as a function.
new on a switch in an expression context.
translate rules did not flush the content captured by the implicit translate rule early enough. That could cause the content captured by a translate rule to be mixed up with the content preceding the rule.
else clause on a do select-type block
when the head type had already been handled in a case clause. This is contrary to the specification, since the else clause is dead code, and should be removed. An error is now emitted.
append modifier could not be used in conjuction with the new
operator on the left-hand side of the open action.
set.
declare data-letters declaration
referred to it as the (deprecated) letters declaration.
declare name-letters declaration.
shared as name in an interface module would lead to a segmentation fault when the corresponding implementation module was imported.
overloaded function was declared as either value source or value output.
current elements pseudo-shelf is accessed in a context where it is guaranteed to be empty.
 overloaded switch function could not be used in a find rule.
value string source argument to a function taking a read-only string argument would trigger an internal error.
returns in function bodies were not being emitted.
record type that extended another pre-declared record type.
overloaded when it was previously-defined as overloaded would lead to an incorrect error message.
next group is in a find rule did not affect the find-end rules' active group.
null character would be truncated, thereby making it inaccessible.
conversion-function from string source to switch could not be invoked: an error was emitted claiming that a type cycle had been created.
string source cast on #current-input was causing the input to be buffered.  This was both unnecessary and incorrect.
new operator applied to strings and streams would lead to an internal error in the OmniMark compiler.
 doctype is test inside a repeat over loop could lead to a segmentation fault.
value argument as a shelf-class argument (i.e., read-only, modifiable, or write-only) to a
catch would trigger an internal error.
elsewhered, never defined, and called in a using input as qualifier, would lead to an internal error at run-time.
stream test was applied to a value stream argument.
string source modifiers (e.g., binary-mode, buffered, ...) were
not always being propagated to external string source functions.
optional argument could be used in a context where its value was required but unknown, leading to undefined results. This is now a run-time error.
value string sink argument would lead to a segmentation fault in the compiler.
stream indexed numerically to a function as optional string sink argument could corrupt the optionality of other arguments.
elsewhered function definitions, the OmniMark compiler rejected #main-input and #process-input as initialisers on optional string source function arguments, as well as #main-output, #error,
#suppress, and #process-output as initializers on optional string sink function arguments.
#main-output or #process-input is encountered in contexts where it might lead OmniMark to wait indefinitely for input.
#current-input and #current-output are no longer accessible in record type constructors.
dynamic function on an undeclared shelf could lead to an internal error.
string could not be copyed to a shelf of type
stream. This operation is well-defined and should be allowed.
else clause of a do...done block
pointed to an incorrect line number.
-load command-line option now indicates so.
name of on supplied external string sink functions did not always return the correct name.
is thrown did not succeed for exceptions that have been thrown and will be handled by the current catch scope, nor for exceptions thrown by other coroutines.
catch clause, the program could continue running.
insertion-break and replacement-break rules were not properly module-protected. Now they fire in the module where the stream was opened.
external-text-entity rules in one module was turning off default entity resolution in other modules.
repeated (||*) operator on a string longer than 4096 characters.
string source being matched could erroneously fail.
content-start pattern was sometimes erroneously succeeding at a point following an entity.
repeat over #libpath, inside an external-text-entity rule.
stream previously opened as a buffer without referents-allowed
and then reopened with referents-allowed no longer buffers the previous contents of the buffer. This should result in a small performance improvement.
drop or take operator was causing a crash.
reopen with referents-allowed without as clause was failing if the stream did not already have referents allowed.
string sink function passed as a value string sink argument could cause an internal error, or a section of code to be not executed.
output-to a string sink function with an empty body, predeclared with elsewhere, could cause an internal error at run-time.
external string sink function could crash at run time.
value-start pattern didn't match on the beginning of a source created using drop operator.
string source function that was eventually resolved to an external string souce exported from a module was not correctly generated: incorrect data was generated from the call.
null characters were truncated when emitted by assert or not-reached.
translate rule header could cause a segmentation fault.
halt-everything in markup-error rule would cause a segmentation fault at run time.
string source function could raise an internal error.
find-start rule could affect the element rules' active group.
optional argument to an external function was treated as specified.
write-only.
string sink function passed as an argument to an external function did not receive any input until the external function closed it.
value string sink arguments could not be passed a multi-component sink, constructed using operator '&'.
#current-output in an always clause could lead to a segmentation fault if the current output was a coroutine that executed halt.
string source function with another string source function passed as argument was being bypassed when called in the context of a do xml-parse or do sgml-parse.
string source that was consumed as a part of a join could sometimes be scanned again outside of the join.
join of multiple string sources was scanned and then restored to its starting position, the join's components' positions were not restored.
-warning specified, but no total warning count.
#main-input and #process-input string sources to be used together even when there were no input files specified.
log-message could unnecessarily consume large
amounts of memory.
modifiable stream argument have been generalized to take a write-only string argument.
vfs.connect-directory was expecting a "file:" protocol specification. It now works on plain file system paths.
vfs.copy was failing to copy symbolically linked directories on Unix platforms.
vfs.describe did not report proper results for a Unix file when its owner or group identifier did not correspond to a known user or group.
OM_PersistentSource_t::AtEnd () that provides access to the low-level
C API call OMXF_SourceAtEnd ().
string or stream, and of
shelf class (i.e., read-only, write-only, or modifiable).
opaque, and of shelf
class (i.e., read-only, write-only, or modifiable).
external string sink would refer to it as a persistent source, rather than persistent sink.
db.insert, db.update, and db.delete that operate on tables now can handle table and field names with non-alphanumeric characters.
global referents entry in the variable table now appears only if the program uses referents.
cross-translate, could be run but not debugged in Studio for Eclipse.
throw from within a using nested-referents scope would terminate the current debugging session in OmniMark Studio.
-ftrace option was missing from the OmniMark Studio debugger.
#external-text-entity #document rule was not working in the OmniMark Studio debugger.
#external-test-entity rule could terminate the current OmniMark Studio debugging session.
global or constant shelf could stop the Studio debugger.
 invalid-data rule could cause the OmniMark Studio debugger to prematurely quit execution.
-help command-line option text did not specify the arguments for
the -gc-threshold and -gc-increment options.
#appinfo information was accessible from an XML parse
nested in an SGML parse.
#current-output from a function called within a fork
(i.e., the & operator) could go to another stream specified by the
fork.
using output as (and similar constructs) with
multiple destinations could be confused by extra parentheses around
the first stream.
using attribute scope containing "%c" could cause an internal
error in some cases.
string source function used on the right-hand side
of a scanned join operator (i.e., ||) was sometimes discarded.
always clause could stop exception propagation.
submit action in a pattern matching context (e.g., do scan), prefixed by a using output as would lead to an internal error.
submit of a string source derived from the output of a parse could
cause a segmentation fault.
string source as a string sink would lead to an
internal error in certain circumstances.
binary operator could not be overloaded.
difference, format, mask, modulo, shift, and
union could not be stropped (i.e., escaped using the backtick)
process-end rule in an implementation module would cause an
internal error.
document-start, docuement-end,
find-start, or find-end rule is encountered in a module; these rules
cannot be triggered within a module.
is keyed shelf query is applied to
a keyless shelf; this test is invariant and should be removed.
-ftrace command-line option, the compiler could
report that a valid function definition was invalid.
#markup-parser sink from an element rule would
cause an internal error instead of throwing to #program-error.
newline declaration was allowed in a program that contained
modules, if it appeared after the module import(s). This is not
well-defined, and is contrary to the specification. An error message
is now generated.
open or reopen did
not have any effect.
buffer attachment type did not allow modifiers to be specified.
value string sink arguments was not
reported at compile-time, and could lead to a segmentation fault at
run-time.
open-only modifiers,
like text-mode, in other contexts like using output as.
reopen...as  was applied to a stream that cannot be reopened,
an invalid error was reported.
string sink or string source
would lead to an internal error.
new operator appearing where a string sink was expected could
cause a segmentation fault. This is now a compile-time error.
++  operator sometimes did not restore the input consumed.
string sink functions from external filter libraries (e.g.,
omffbase64) would close persistent string sinks (such as #main-output) that were
passed to them.
string sink function passed  as an argument to an
external function would not see the data written into it by the
external function.
#current-output has name caused an internal error instead
of a proper compile-time error.
#current-output as a write-only argument could cause an
internal error instead of a proper compile-time error.
string coercion could cause an internal error in certain contexts.
item of applied to a shelf
indexed by item).
lookahead not not would lead to an internal
error, rather than a syntax error in certain circumstances.
named sub-pattern anywhere but in the header of a
translate rule or in the header of a processing-instruction rule would
lead to an internal error.
return (from an always clause) from a string source or
string sink function caused an error.
catch declaration would lead to an
internal error in a catch clause.
string source
function was lazily consumed.
constant shelves
declared with the same name, but with different types.
global shelf of a record type could be used in its
initializer. This is no longer allowed, since the shelf has not been
created when the initializer runs.
save a constant
specified the wrong type.
using nested-referents
scopes.
catch invocation could be left out. This is
contrary to the specification: the herald is now required.
string sink function in a using shelf item
association would trigger a misleading error message.
value string source
argument appeared in a using shelf item association.
value string sink argument in a
using shelf item association.
save groups was
encountered was incorrect.
string source function to its #current-output and
a string sink function in parallel could cause an internal error.
submit within a using input  scope in a find rule could trigger an
internal error in the compiler.
-f command-line option on Unix did not accept OmniMark project
files (.xop) produced on Windows.
switch cast would cause an internal error.
#current-input is attached test returned a wrong value in some
circumstances.
is specified test on optional arguments to a
function was incorrect under certain circumstances.
string source coroutine was output through an intermediary,
context switches did not occur until the coroutine was finished.
initial clause was specified on an
optional argument of class other than value.
newon a shelf literal heralded by an undeclared type
would trigger an internal error or a segfault in the compiler.
using output as to be applied to the result of
operator new.
catch arguments.
#current-input in
several contexts where #current-input would be unattached at
run-time. This moves an error from run-time to compile-time.
#current-input in a string source function. This error used to be caught at run-time; it is now
caught at compile-time.
sink would cause an internal
error.
export as opaque catch.
capture-environment in the library OMUTIL was not
displaying error messages in failure cases.
string-returning function called from a pattern could consume
#current-input and affect the continued pattern matching. The patterns
are now protected from side-effects on #current-input.
markup-error or sgml-error rule: this
style is deprecated, and its support will be removed in a future
version of OmniMark.
#console is encountered; #console is
deprecated.
drop, matches and take did not try to invoke conversion
functions on their first argument.
item of was applied
to a shelf indexed by item.
any{"%d(i)"}, where i is an integer, was being
rejected.
return action  in a function body.
#current-input from a string sink function
cannot be used as a value string source function argument has been
removed.
streams if one item on the
shelf was unattached.
any* would consume only up to 2 GB of data. This
limitation has been removed.
repeat over loop inside of a catch clause would scramble the
information required to rethrow the exception.
with append modifier had no effect when assigning to a
referent.
modifiable record types would
collide. This restriction has been removed.
is default-entity test caused it to always
evaluate to false.
opaque as
the data type of an argument of a catch or a function. The problem
would not be manifest if a user-defined data type named opaque was
declared. 
switch shelf item using an item indexer was
not being handled properly, which could lead to erroneous behavior at
run-time. 
any* when true. 
find-start rule
for a cross-translate program.
lastmost indexer on a shelf-class function
argument could lead to a segmentation fault in the OmniMark
interpreter. 
% (format) operator was not being handled properly in a pattern
context.
referents shelf now supports the new indexer syntax.
any** were not being evaluated correctly.
->) did not handle user-defined types
properly. 
any** (or any++). 
number of sgml-dtds. 
scan  input #main-input in an XML parse.
-ftrace command-line option has been changed:
instead of writing its output to the #error stream, it is written to
log-message, allowing this feature to be used in server environments
where no-default-iomight be in effect.
throw occurred inside a
repeat over current elements. 
elsewhered) definition, which was satisfied in
the importer. This has been disabled.
repeat over current elements loop to change
the name of the current element obtained via the name of element
expression. 
last content is appearing outside of a parse would cause the
OmniMark run-time to segfault. 
new as the read-only argument to a
function would cause an internal error. 
clear sgml-dtds{""}. 
is specified
applied to a shelf with a key-based indexer. 
name of operator  has been improved.
name of  operator is applied to
a value stream argument has been improved.
remainder source. 
has name test was not being flagged as
used, and therefore a spurious warning was being emitted. 
translate rules were firing within the scope of markup-comment
rules if they wrote to #error.
find any ++ => p lookahead ("Hello, World!" | =|)
record type that the other extended.
dynamic function had to be declared as overloaded as well, if an
overriding was declared in a different module.
referent
"..." to be used wherever a stream shelf reference was required.
#current-input was not inherited from the invoking domain to the
input domain when invoking a markup-parser.
dynamicfunction declaration could cause an
internal error in the OmniMark parser.
new has led to a number of
issues being fixed in its implementation.
down-translate was begun
on a truncated input.
repeat over on an empty constant or global shelf would cause an
internal error.
** pattern operator has been improved.
process local stream s initial { "Hello, World!" with key "Salut, Monde!" } set key of s{"Salut, Monde!"} to "Salut, Monde!"
value was not being handled correctly when used as a
function argument herald.
stream-returning function to a stream shelf has
been optimized.
referents and records would cause a crash at
execution time.
activate or deactivate on an
expression involving cast.
dynamic
function involved the cast operator.
is specified test was not being evaluated correctly in a
well-formed parse.
using a field of a result of a record-returning function has been fixed. 
and, couldn't be exported from modules.
item of a built-in stream shelf like #current-output caused an internal error.
elsewhere function definition.
with append modifier in some situations didn't work properly on buffers.
repeat over action didn't check if the shelf was an unspecified optional function argument. 
copy action didn't check if either of the shelves was an unspecified optional function argument. 
catch and always. 
#current-input appearing after an action containing the drop operator referenced the result of the drop instead of the contextual current input.
#main-input in memory.
new applied to a stream shelf literal would cause an
internal error in the compiler. 
format function using a different signature.
source function call.
repeat over or using of a value string argument, using a shelf reference
alias, was not being handled properly by the OmniMark compiler.
OCI backend
db.discard function on a compiled statement used for a
streaming insert no longer causes a crash
   
ODBC backend
| Prerequisite Concepts What was fixed What was new What's new What's Changed | 
Copyright © Stilo International plc, 1988-2008.