qwertie / ecsharp

Home of LoycCore, the LES language of Loyc trees, the Enhanced C# parser, the LeMP macro preprocessor, and the LLLPG parser generator.
http://ecsharp.net
Other
172 stars 25 forks source link

Introduce Loyc.Interfaces & more for version 27.0 #101

Closed qwertie closed 4 years ago

qwertie commented 4 years ago

Loyc.Essentials is about 250 KB, a little fatter than I'd like. I think there should be an assembly dedicated to interfaces, and to very small but essential types such as small structs that the interfaces rely on (e.g. Symbol), so people don't need to bring in a somewhat fat reference just to use interfaces. The interface library should contain virtually all interfaces, including a couple that remain in other libraries (notably ILNode in Loyc.Syntax, but not IToLNode or IMacroContext which depend on the real LNode).

Also, which parts of Loyc.Essentials are really essential? Perhaps DList should move to Loyc.Collections, for example. And as I mentioned in #100, with tweaks to Loyc.Syntax I expect to be able to drop the dependency on Loyc.Collections.

I'd like to bundle this change with #100 and various other changes already completed in the breaking-changes-2.7 branch, and then do a release.

CC @jonathanvdc - if you suspect any APIs should be renamed, now is the time to speak!

qwertie commented 4 years ago

Deferring #100 to v28.0.

qwertie commented 4 years ago

Loyc.Interfaces was introduced in v27.x.

I haven't got around to other decisions about moving things between DLLs.