Synthesis Change Log
Introduction
This log lists all changes since version 1.0.
Version 2.1.4, released 2010-05-26
Enhancements
Version 2.1.3, released 2010-03-18
Enhancements
- json - Parse and generate JSON
Version 2.1.2, released 2010-03-08
Enhancements
- memoize - memoize method/function results
Version 2.1.1, released 2010-02-22
Important Notes
- The command-line syntax for the htmlcover
utility has changed. The previous syntax will no longer work.
Enhancements
- New classes
- Regex
- Added escape method
- Improved compilation performance
- Optimized leading, unconditional \G
- ls
- htmlcover
- Ability to sample more than one executable in a single report
- -t option to specify report title
Version 2.1.0, released 2010-02-17
Enhancements
- Regex
- \G to anchor to the end of the last match, and ContinueFrom member
- Continue option ('c')
- Allow lowercase \ca..\cz for control characters
- GNU anchors and word boundaries: \`, \', \<, \>
- Allow duplicate group names, capturing to the same group
- Alternate (.NET) syntax for named group capture
- Alternate (.NET) syntax for named group back-reference
- POSIX character classes, including [: :] and \p{ } (Java) syntax
- $ tokens for replace
- \x00 thru \xFF for replace
Corrections
- Change File to allocate channels above 255 when
not in Toolkit mode, to avoid later collision with U_START (which can close
channels 1 thru 255).
Version 2.0.4, released 2010-02-12
Enhancements
- Regex
- DotMatchesNewline option ('s')
- ExplicitCapture option ('n')
- Dynamic options: (?imnxs) and (?-i-m-n-x-s).
- Look-ahead (?= ), (?! ); and look-behind (?<= ), (?<! )
- Conditionals: (?(group) ), (?(?= ) ), (?(?! ) ), (?(?<= ) ), and (?(?<! ) )
- \y and \Y as equivalents for \b and \B (a la TCL)
- \m for beginning of word, \M for end of word
- Improved performance of the compilation phase
- ls
Corrections
- Regex
- A named group nested in an unnamed group lost the unnamed group's back-reference
- Dot should not match newline (%char(10)) unless new DotMatchesNewline option is enabled
- CodeCoverage
- "No object for handle" error in Markup phase
Version 2.0.3, released 2010-02-02
Important notes
Enhancements
- Regex
- {n} and {n,m} to specify minimum/maximum repetitions.
- ? following *, +, ?, or {} to indicate non-greediness.
- \A and \Z,\z for begin and end anchors, respectively.
- \b for word boundary, \B for not a word boundary.
- \a for bell, \e for escape.
- \Q..\E to quote text literally.
- (?P<group>) for named group capture.
- (?P=group) for named group back-reference within the pattern.
- \g<group> for named group substitution in replace
- Character class subtraction: [a-z-[aeiou]] matches consonants, for instance.
- Improved performance on matching an unconditional \A or ^.
- Optimized matching when we can rule out further better matches.
- CodeCoverage
- Improved performance by replacing associative lists with hashes.
- Added ProgressHandler class to provide progress reporting.
- The htmlcover utility now reports more detailed progress to stdout.
Corrections
- Regex
- replace with a \ at the end should treat \ as a character.
- /a*/ should always match position 1, with length of zero or more.
- /()*/ should always match position 1, with a length of zero.
- Avoid infinite recursion on repeating, potentially zero-length matches like /(a?)*/ or /(a*b*)*/
- Assertions
- On .NET, capture the inner exception when an exception is thrown from within xsubr.
Version 2.0.2, release 2010-01-20
Enhancements
- CodeCoverage
- Sampling performance improved by caching current source file between statements.
- Regex
- \1 thru \9 back-reference within the pattern.
- (?:) for grouped sub-expression without back-reference.
- (?#) for comment.
- ls
- Added deepcopy method to copy all nested lists.
- Improved performance of quicksort and
mergesort, and changed
sort to use the best one for each segment,
based on size.
- Improved coverage in unit tests
Corrections
- Change GotToolkit to use E_INFO(D_ENV_LEVEL) to test for Toolkit activation (per tr#30959)
- Var.ToHtml() progressively off by one when expanding tabs
- Version.Letter was null when parsing an invalid version, changed to empty string
Version 2.0.1, released 2009-12-31
Enhancements
- Regex
- Support for extended syntax option (x)
- Improved performance by removing dead-end optimization and other unnecessary code
- CodeCoverage
- Better recognition of USING labels
- Better handling of continuation lines
- Exclude CATCH statement
- Recognize jump into CATCH paragraph
- Map filenames without regard to case (except on Unix)
- Added D_UNIX definition for all *n?x platforms
- Improved coverage in unit tests
Corrections
- Comparable mixin: decimal COMPARE_MEMBER on .NET produced unreliable results
- File.Close when channel already closed gave RETURN without CALL on .NET
- If more than two assignments occurred in a let, the second thru next-to-last would not be released.
- ls.subseq limiting upper index off by 1, resulting in index out of bounds.
- Decrementing a decimal Var failed on .NET
- CompareString.TestNatural used the wrong index when testing for space in the second operand.
- CompareString.TestNatural same number at the end of operands caused an indexing error.
- Regex: match against /^/ yielded length of 1, corrected to 0.
- Tests for mixins included files with initial uppercase character - changed to all lower-case
Version 2.0.0, released 2009-12-26
Important Notes
- Synthesis now requires at least version 9.3.1 of Synergy/DE
Enhancements
- New classes:
- New utilities for code coverage analysis: cover and htmlcover.
- ls constructor for specifying initial capacity.
- Methods increment, decrement, and
ToHtml for the Var class.
- Display method for the File and Console classes.
- Close method for the File class.
- Dispose method for the Hash class.
- Various type declarations for the first argument to fif, to avoid casting to boolean.
- Var.AsAlpha() for decimal Vars no longer includes trailing zeros
or decimal point unless significant.
Corrections
- Regexen with complex nested subexpressions.
- Handle regular expressions with ^ or $ within parentheses.
- Insure alphanumeric/string comparisons use string comparison operators (.eqs., etc.) to test for equal length as well as contents.
Limited compatibility with Synergy.NET beta, which required numerous changes, including:
- Rewrote the internals of build_message() for assertions.
- Handle distinctions between types i, int, and boolean.
- Handle distinctions between types d and decimal.
- Create D_EQUALS_PARAM macro for declaring parameter to object.Equals
- Create D_INARG macro for declaring input parameters as byval for .NET only
- Don't override object.MemberwiseClone in .NET
- Declare ls.remove as 'new' for .NET
- Don't provide ls.contains for .NET (already provided by ArrayList)
- Abstract classes cannot be nested classes
- Create makefile dependencies 'net', 'cleannet', and 'runnet'