|
|||||
|
|||||
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 export
ed.
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 string
s and stream
s 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.
elsewhere
d, never define
d, 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 optional
ity of other arguments.
elsewhere
d 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 copy
ed 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 open
ed as a buffer
without referents-allowed
and then reopen
ed 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 source
s 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 source
s 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 referent
s.
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 sink
s (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
.
new
on 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.
stream
s 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-io
might be in effect.
throw
occurred inside a
repeat over current elements
.
elsewhere
d) 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.
dynamic
function 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.