4.0

December 8, 2015 · View on GitHub

BIG THANKS to Sam Harwell and, again, to Udo Borkowski for debugging help and suggestions. Sam is doing the C# implementation. Benjamin Niemann is doing the Python port. Alan Condit is doing Objective-C.

4.0 – March 27, 2011

  • ST.add() returns self now so we can chain. t.add("x", 1).add("y", "hi");
  • import from files in jar didn't work.
  • removed field tokens from STGroupString
  • improved imports lookup
  • made fields of events public final.
  • augmented debug event toString and fixed start/stop issue with eval events. renamed fields to be more clear.
  • Added IndentEvent for dbg
  • ^(INDENT expr-sub-tree) is now ^(INDENTED_EXPR INDENT expr-sub-tree) with changes to grammars. More consistent with subtree root being operator. STViz now highlights indentation properly in template pane.
  • Altered CodeGenerator.g to pass AST node for indentation not just string. This way we get INDENT operations into the sourceMap for indent debug events.

4.0b5 – March 6, 2011

  • true/false were only allowed as default args; now allowed as template arg expressions in templates. Works as dictionary value too.
  • couldn't have anonymous templates inside a region.
  • parentheses were a bit weird in conditions. Now, conditions cannot use parentheses to mean "early evaluation" except as obj.(propName)
  • nativeGroup of all implicit templates was STGroup.defaultGroup.
  • removed all writes of the enclosingInstance at evaluation time; fixed issue for STViz.
  • comments on line by themselves don't emit \n to output
  • STViz tried to highlight AST pane even when we switched ASTs
  • combined load_str, write into write_str single op. minor optimizations too. Seems a tiny bit faster per benchmarks.
  • Added ST.VERSION auto-updated by ANT.
  • added STGroupString
  • Added support for this in group.g:
oldStyleHeader // ignore but lets us use this parser in AW for both v3 and v4
 :   'group' ID ( ':' ID )? ( 'implements' ID (',' ID)\* )? ';'
 ;
  • IndexOutOfBounds Exception when using "cap" format on empty string
  • @t.() ::= "" caused NPE
  • Region redefinition caused NPE. "<@r>a<@end><@r()>"
  • STViz couldn't see first subtemplate when computing template range in output.
  • Was incorrectly computing filename to load template .st files from group dir.
  • Listener was not notified upon "no such template" in group dir.
  • Redid how ST found imported files, dir, etc.. Can now import a template file even. Can be absolute path or relative path. If relative, it looks in dir of .stg file with import then CLASSPATH.
  • The listener of import groups is now set to that of group that imports them.
  • Regions behave like tags now. Indent respected if <@r>...<@end> on indented single line. Indent/newlines ignored after those tags if on separate lines.

4.0b4 – February 5, 2011

BIG THANKS to Udo Borkowski for his help debugging these betas and his suggestions.

  • added write to file methods
  • had infinite loop for expr: "<t()$"
  • the default file encoding is now UTF-8
  • early eval <(x) > using new STWriter derived from type of current STWriter. e.g., AutoIndentWriter.
  • didn't detect nonterminated comment.
  • added two literals "true" and "false" to the template argument syntax; e.g., stat(name,x=true,y=false) ::= "..."
  • it was treating "..." default arg as a template not string.
  • throws STException now upon not finding group file or group dir instead of sending err to listener.
  • default args couldn't have subtemplates t(x,y={<x:{s|}>}) ::= "..."
  • Added a new benchmark from Oliver Zeigermann. Discovered 60% of time is spent using reflection invoke() for properties.

4.0b3 – January 28, 2011

  • exception in lexer blew out of parsing
  • missing '}' in {...} caused infinite loop
  • NPE in storeArgs if empty arg list
  • removed debugging prints.
  • x={<(...)>} default arg was hardcoded to <...> not .... or whatever.
  • The grammar needed to match and ignore an optional INDENT before region @end
  • when redefining a region (template) the newline before the >> was kept.
  • WS not ignored in front of STRING token in expressions.
  • closing STViz doesn't exit vm now.
  • throws exception if registering renderer or model adaptor for primitive

4.0b2 – January 22, 2011

  • Order of static init issue; an error mgr was null.
  • Fixed some unit testing the Windows friendly
  • Fix bug in triple if-elseif-elseif-elseif; added unit tests
  • bug where I did not say current_ip when calling exec() from writeObject
  • Updated README to include install information

4.0b1 – January 14, 2011