Changelog for treescript-0.1.0.0
Changelog for treescript
12/19/18
Started brainstoriming
12/21/18
Initial specification
Setup Haskell project
- General architecture/idea from previous project
- Will work very hard to make less bloated though, no unnecessary features
- Although there are a few style differences:
- More generics / autoderiving
- Language extensions - in alphabetical order
- Imports -
TreeScript
in alphabetical order, then others in alphabetical order - Qualified imports always have shortest non-conflicting qualifiers, no special differences for "main" imported class (e.g
Text
inData.Text
) - Try to put small functions above big functions in modules - still order is datatypes, classes, instances, and functions
- Modules can be bigger, but they'll still be split when too big (overall module structure still shouldn't matter much) - generally 100 lines is OK, 200 or 300 in some cases OK too
12/23/18
Lexing and Lex
AST
- Passes a few tests but likely still some bugs
General test suite (taken from previous project)
12/25/18
Parsing and Sugar
AST
- Can now analyse this AST and generate code with it even though it might not be well-formed
- Passes a couple tests but likely some bugs
Some docs
- Code design
- Changelog
12/29/18
Significantly changed specification, slightly changed lexing and parsing
- Mainly made specification much more precise, and figured out how to implement
- Updated README, lexing, parsing, and tests
Sugar
andCore
ASTs don't have guard support yet, butLex
AST has guard lexemes
1/01/19
Desugaring and Core
AST
- Can parse spliced code blocks with plugins
- Still can't parse guards
Basic plugin support
- Plugin settings
- Plugin languages
- Currently the only languages are
scheme
andtext
scheme
has a specification and parsing (although dots followed by lists don't work)text
has a specification
- Currently the only languages are
- Plugin printing skeleton
1/02/19
C template, translation and Translate
phase
- Template for C code
- Updated README, added how Descript code will be translated into C, spliced into the template, and this will be compiled to get the Descript executable
- Tested via printing/observing, didn't actually compile code yet
1/03/19
Compiling and CLI
- Compiling both C (last step) and Descript (all steps)
- Tests for compiling - currently only work for AST data
- Command-line interface only supports compiling
- Started to change name to "TreeScript"
1/04/19
Renamed to treescript
, added vscode extension to project
Run on source code - treescript run
- Parses code into AST data, runs the executable, and prints it back into code
- Now can take a Descript source file and input, and generate output -
treescript compile
the source file,treescript run
the executable with the input. - I/O exceptions should now be wrapped in
Result
s, better error messages and handling - Bugfixes for compiling (fixed memory issue)
1/07/19
Started to add functions and "groups"
- Syntax for functions and groups (
Lex
toCore
phases) - untested, but regular syntax still works - Some documentation
- TODO Add more documentation, add ability to translate to C (
Translate
phase)
1/12/19
Libraries
- Renamed "servers" to libraries
- Changed library specification and implementation:
- Directly inserts library into compiled C program and calls function, instead of communicating with an external command-line program
- Functions are qualified by library
- (From previous changes) functions have fixed numbers of arguments, libraries have names in spec
- Added
Base
library with some simple functions - arithmatic and string appending- May change these functions later, e.g. make them fail more gracefully
- Added test for library which also uses Y-combinator
- Bugfixes, refactors, documentation improvements, etc.
Working on VSCode extension / language server on a separate branch
2/15/19
Wrote interpreter in Rust, instead of directly compiling into C
- Currently slower than C version
- But should be faster to debug and improve