This page has moved to ecsharp.net.
GitHub doesn't support HTTP redirects, so you'll be redirected via JavaScript in 5 seconds.LeMP & EC# Release Notes
Gathered from commit messages. Trivial changes omitted.
See also: version history of LoycCore and LLLPG.
v1.7.1: Mar 22, 2016
- Unveiled the Macro Reference Manual
- Added macros:
includeFile(aka#include),#set(aka#setScopedProperty),#snippet(aka#setScopedPropertyQuote),#get(aka#getScopedProperty), andreplacePP(replaceplus preprocessing of initial parameters). MacroProcessorTaskintroduces two global-scoped Symbols,#inputFolderand#inputFile.- Eliminated
#haveContractRewriterand#setAssertMethodmacros, since you can now just use#set #haveContractRewriterand#snippet #assertMethod = AssertMethod; - Renamed
on_error_catchtoon_throw_catchso that it’s made of keywords. - Code contracts:
- Introduced
[ensuresFinally], which checks a postcondition infinally - Changed Contract Attribute error messages to match MS Code Contracts
- Code contract attributes now support lambda functions
- Introduced
- Changed public interface of
LeMP.Compilerto make it a bit more flexible and easier to use ParsingService: added global language “registration” feature.- Loyc.Essentials: added
TryGetValueextension method forIReadOnlyDictionary. - Misc., e.g. renamed some members of
Loyc.Ecs.Parser.TokenType - Bug fix to
IMacroContext: made macro dictionary fully immutable
v1.7.0: Mar 18, 2016
- Renamed
Localize.From=>Localize.Localizedand made it an extension method - Forwarding macro
==>now recognizes_as name of current method/property (synonym of#). - Refactored EC# parser.
v1.6.0: Mar 9, 2016
- Factored standard macros into their own assembly
- LeMP: Changed the syntax of multi-
using - Bug fix in handling of
ininmatchpattern matching - Bug fix: Despite appearances,
StreamCharSourcedid not actually use UTF8 encoding by default
v1.5.1: Mar 5, 2016
- Renames:
EcsNodePrinter.AllowChangeParenthesis=>AllowChangeParentheses,CodeSymbols.Cons=>Constructor. - LeMP: Added macros for
in,..<,...; LogExceptionnow puts “Context” & “Severity” inException.Data- LeMP: Renamed
on_catchtoon_error_catchfor clarity. - LeMP: Introduced macro for constructors named
this. - LeMP: Enhanced
alt classusability by preservingwhereclauses in derived types. - LeMP: Refactored
MacroProcessorTaskto use call stacks that are less deep. - EC# parser: Added property-as-expression syntax. Mainly this is to support constructor+property syntax like
this(int Foo { get; } = 0) {}, but in fact properties are now allowed wherever variable declarations allowed. - EC#: Introduced
EcsValidatorsclass (factored out ofEcsNodePrinter)
v1.5.0: Mar 2, 2016
- Renamed Ecs.exe to Loyc.Ecs.dll, and added new Main/Test project.
- Renamed
RVListtoVListthroughout the codebase, and renamedRWListtoWList. - Renamed namespace
EcstoLoyc.Ecsand movedEcsLanguageServicefromEcs.ParsertoLoyc.Ecs. - Renamed
ParsingService.PrintMultipletoPrint(easier to remember). - LeMP: Added UsingMulti macro for
usingmultiple namespaces - LeMP:
ForwardingMacrono longer generates a setter forT Prop ==> expr. Rationale: the macro has no idea whether or not a setter exists, and the visual similarity to=> exprsubtly suggests that no setter is generated. - EC#: Added support for C# 6 syntax; in
#catch(eVar, when, {...}), inserted newArgs[1]forwhencondition - EC# parser: allow enums to have a name that is a
ComplexNameDeclrather than just a simpleId(EDIT: broken?) - EC# parser: the argument of a
usingdirective is now parsed as an expression. - EC# bug fix: Added support for properties with arguments, e.g.
T this[int x, int y] {...}, by adding a third parameter in #property for all properties (e.g.#property(T, this, #(int x, int y), {...}))
v1.4.1: Feb 28, 2016
- Updated the
replacemacro and theLNodeExt.MatchesPatternmethod to support$(..p), in addition to the existing$(params p)syntax, as another way to match multiple parameters or statements. matchCode: Eliminated the old$(x(condition))syntax in favor of$(x && condition), for consistency with thematchmacro. The other old syntax$(x[condition])still works.- LeMP: Added pattern-matching
match(...) {...}macro! - EC# parser: Added
...operator (and..<as synonym of..). Fixed a bug where some error messages showed an incorrect location. - LES: Edited
ParseIdentifier()not to support legacy#`...`identifiers. - EC# parser: In order to support a pattern-matching macro, added a unary
isoperator, and tried to add support for parsingX is Foo(...)as(X is Foo)(...), while increasing the precedence ofisandason the right side of the operator. Sadly, parsing ofX as Foo < Yis broken due to a bug in LLLPG that I can’t figure out how to fix. Increased the number of places where uninitialized variable declarations are allowed. - LLLPG issue #13 (
GeneralCodeGenHelper):EOFis now casted before comparing with laN, e.g.la0 == (LaType)EOF RunTestsNow prints reason ofFailsoption on-screen
v1.4.0: Aug 25, 2015
- Wrote and tested
matchCodemacro. - Wrote and tested
alt class, a macro for building algebraic data types use_symbolsnow gives valid identifier names to symbols that contain punctuation.- Changed EC# parser so pattern matching
class X:$(..bases) {}works even if there are no base classes. - Changed code
quotemacro to avoid needing anLNodeFactory F. - Bug fix: certain macros did not enable reprocessing of children
- Bug fixes in
quote/rawQuote,matchCode, andSetOrCreateMembermacros; and in printer and parser.
July updates: forgot to raise version number
- Added
use_symbolsmacro to generate field declarations for@@symbolsin LES/EC#. - LeMP: tuples: added support for deconstruction + declaration:
(var x, var y) = tuple - LeMP:
nameof(): split intonameof()andstringify(), withnameof()matching C# 6 behavior - Oops,
LNodeExt.FindAndReplace()andLNode.ReplaceRecursive()are duplicates. DeletedFindAndReplace() - Updated LoycFileGeneratorForVs.exe to be able to register itself in VS 2015
- All LES-based parsers, lexers and unit tests throughout the codebase have been updated to use LESv2 syntax.
- VS extension: Fixed LES syntax highlighting of superexpressions & function calls.
- Split the symbol for indexing and array types into two separate symbols
_[](IndexBracks) and[](Array), where previously[](Bracks) was used for both. - Bug fixes in EC# printer.
v1.3.2: Jun 21, 2015
- LoycSyntaxForVs.vsix now installs (and happens to work) in VS 2015 RC
- Bug fix: culture-sensitive number parsing (tests would break on machines not using “.” as number separator)
v1.3.1: Jun 14, 2015
- LeMP: Added
#printKnownMacrosmacro,IMacroContext.AllKnownMacrosproperty - Tuples:
set_tuple_type(TupleSize, BareName, Factory.Method)anduse_default_tuple_types()are now scoped to the current braced block.Pair.Createis no longer used by default (onlyTuple.Create). - Adjusted EC# parser to accept
Type $name;as a variable decl - Added Demo Window to LeMP.
- Renamed LllpgForVisualStudio => LoycFileGeneratorForVS.
v1.3.0: May 27, 2015
I’m not attempting to make release notes this far back.
The LLLPG vers ion history does go back further.