4a52d2bc6aconlang: Update type checker - cl-typeck: Add modules, intrinsic types, unify definition ids - cl-ast: make attribute lists Default - cl-structures: Add functions to iterate through a pool - cl-repl: Create an example REPL for the type checkerJohn2024-04-01 05:14:06 -0500
7b40ddc845cl-ast: destination side of type alias should be an identifierJohn2024-04-01 04:20:26 -0500
bdf0bb68cacl-ast: improve formatting of enumsJohn2024-04-01 04:18:31 -0500
8ee318f26bcl-ast: Move ExprKind::Assign outside the box, to be more consistent with other uses of ExprJohn2024-03-28 16:34:24 -0500
ba148ef5decl-typeck: Continue work on symbol namespaces - Refactor for cl-structures intern pool - Create a list of types the compiler is supposed to care about/have implementations for (Intrinsic/primitive types) - Add modules and projects (the sym equivalent of ast::File) - Flesh out value definitions - TODO: Create an IR for statements and expressions, and lower the AST into itJohn2024-03-27 01:54:19 -0500
8cbe570811cl-structures: Sketch out a type-safe generic interning poolJohn2024-03-27 01:26:27 -0500
66c29d601ccl-structures: Tree cleanupJohn2024-03-27 01:25:19 -0500
9f9a21b4c3cl-repl: Add example that prints the AST in a more friendly way than Debug but in a more verbose way than DisplayJohn2024-03-27 01:24:28 -0500
2cdf112aa6cl-structures: add todo w/r/t tree traversal apiJohn2024-03-15 05:53:26 -0500
af35dd1bb3cl-structures: add a sized, monotype stackJohn2024-03-15 05:11:47 -0500
ecde44910fcl-structures: Add a simple potted tree structure, for future use in the module systemJohn2024-03-15 05:10:34 -0500
a74cd0b8accl-structures: break span into its own file.John2024-03-12 19:32:11 -0500
2eade74d3acl-repl: Terminal pipe support + fun stylistic fixupsJohn2024-03-01 05:33:35 -0600
9cae7e4eb8cl-lexer: switch to unicode-ident crate, since a dependency of cl-repl depends on it.John2024-03-01 04:11:38 -0600
a07312bf92cl-lexer: fix link in doc commentJohn2024-03-01 03:17:43 -0600
50b473cd55cl-lexer: Move lexer into its own crateJohn2024-02-29 20:58:50 -0600
abf00f383ccl-parser: Move inline modules out of lineJohn2024-02-29 20:44:49 -0600
ab17ebbadccl-parser: break parser into inline moduleJohn2024-02-29 20:43:40 -0600
cc281fc6abcl-parser: Move parser into its own crateJohn2024-02-29 20:41:07 -0600
1afde9ce35cl-ast: Move AST definition into its own crateJohn2024-02-29 19:49:50 -0600
6e1d5af134cl-token: Move token definition into its own crateJohn2024-02-29 19:36:06 -0600
ee27095fb3parser: expand the possibilities for assignment locationsJohn2024-02-29 19:33:28 -0600
69f5035a8bspan: Break out into its own crate, to make room for future expansionJohn2024-02-29 18:31:41 -0600
362817e512cl-repl: fix doctest in repline::ignoreJohn2024-02-29 17:52:16 -0600
421aab3aa2interpreter: Break out into a separate crateJohn2024-02-29 17:51:38 -0600
5eb6411d53interpreter: BuiltIn overhaul! - Allowed builtins to self-describe - Broke builtins into their own module - Created a macro to work with BuiltIns easier - Uses macro 2.0 syntax, so it requires passing in ALL externally referenced identifiers - Luckily, this is already a requirement of good, readable macro definitions! - As a temporary hack, turn overloadable operators into function calls - This is kind of pointless at the moment, since there can only be one definition of a function per name (no ADL/function overloading/traits/type namespaces yet!) - This is also pretty slow, but benchmarking shows it's not as slow as I thought (~400x slower in release mode than a native Rust implementation when running fib.cl/fib.rs. Totally unacceptable for most work, but this is a tree walk interpreter.) - TODO: Remove this when desugaring from operators to function calls is implementedJohn2024-02-29 16:48:09 -0600
e9dc8a7e32cl-repl: hack together some temporary file loading, to aid in standard library development
v0.3.0
v0.0.3
John2024-02-28 06:02:00 -0600
862d81a9d4cl-repl: Rename from cl-frontend. Also disable escape code printing when debug assertions are offJohn2024-02-28 05:32:10 -0600
048e41836acl-frontend: Create a repline demo that collects definitions and usages of identifiersJohn2024-02-28 05:25:55 -0600
78b8d87408cl-frontend: Embrace the crossterm jankJohn2024-02-28 05:11:06 -0600
e01c71f9a7lexer: implement std::error:;Error for Error (whoops!)John2024-02-28 05:00:39 -0600
3785045989cl-frontend: fix strange newline behavior in REPLJohn2024-02-28 01:21:50 -0600
67bb3d4ae3parser: Note intent to switch to a Pratt parserJohn2024-02-27 23:35:41 -0600
ca51a35f5cast: Reduce the number of chained references to 65535John2024-02-27 23:33:20 -0600
04320de9a8parser: Make delim, sep, and rep constJohn2024-02-27 23:32:32 -0600
325498ac8bast: Add metadata attributes on Items TODO: decide what other places attributes belongJohn2024-02-27 23:31:49 -0600
9806e95247ast_impl: Forgot to impl From<Expr> for StmtKind (whoops!)John2024-02-27 22:49:14 -0600
5484d96e7dast: Add the "Self" type in preparation for cl-typeckJohn2024-02-27 22:48:24 -0600
e3f08ac013parser: Overhaul the semi-functional Parser::{delimited, separated, repeated} methods into real higher-order functionsJohn2024-02-27 22:46:36 -0600
978f5e40c1conlang: Introduce type-alias/typedef syntax type T; | type T = U;John2024-02-27 20:49:02 -0600
0c1b3bfe39ast: Do not promise PartialOrd/Ord (breaking change)John2024-02-27 20:41:15 -0600
c36eec216aparser: Allow StmtKind to parse itself (whoops!)John2024-02-26 16:03:18 -0600
66deb41301grammar.ebnf: Sync changes with ASTJohn2024-02-26 16:02:36 -0600
9bde97942cast: Enum variants can have no data, or have an associated integer.John2024-02-26 15:59:15 -0600
bb3eecd190interpreter: Allow statements to choose their own return value (reduces code duplication)John2024-02-26 15:53:45 -0600
ffa313eea8ast: Allow type specifier in let statementJohn2024-02-26 15:49:55 -0600
490d320633parser: allow end of input in binary and indexing operations. This improves robustness and correctness of implementation.John2024-02-26 15:37:07 -0600
13995259aaparser: use different wording when the expected value was an operator vs an expressionJohn2024-02-26 15:35:07 -0600
ae76df9c83interpreter: Fix bug where a break instruction would instead signal a return from subroutineJohn2024-02-26 15:33:47 -0600
1bfeeb1755interpreter: shrink integers to pointer-size in temp type implementation, for speedJohn2024-02-26 15:32:49 -0600
59b73f314aast: Remove unary hash operator to reserve the symbol for use in attribute parsingJohn2024-02-26 15:30:50 -0600
77db95791acl-frontend: Improve the line-editing capabilities in REPL mode. - Note: This adds a dependency on Crossterm, to set the terminal into raw mode. This could be eliminated by linking the libraries Crossterm uses directly... Or I could embrace Crossterm, and use it for all escape sequences in the terminal, instead of assuming DEC VT500 compatibility.John2024-02-26 15:15:34 -0600
5e4e70a72efibonacci.cl: Move the input number out of the stringJohn2024-02-26 15:11:28 -0600
b8d70d3393Cleanup: Break Loc out into a common module, rename WhileParsing => ParsingJohn2024-01-23 01:51:00 -0600
c4a32895dfconlang 0.3.0: Total grammar overhaul - Rewrote the grammar - Rewrote the AST - Rewrote the Parser - Removed pretty printer (now handled by ast::ast_impl::Pretty, a Writer wrapper) - Added items, and new keywords to go with them - Syntax is ~maybe temporary, based on Rust syntaxJohn2024-01-21 05:32:18 -0600
5e2f365f45conlang: deprecate the ASTJohn2024-01-21 01:34:40 -0600
6bb2f3774finterpreter: Add regression tests for operators and precedenceJohn2024-01-09 23:52:48 -0600
d9d8c70556interpreter: revert storing environments in functions This change broke recursion entirelyJohn2024-01-09 22:42:15 -0600
99ade72756interpreter: fix variable resolution and assignmentJohn2024-01-09 22:39:58 -0600
d387e4dfd7interpreter: rewrite interpreter - Remove interpreter struct - Replace with Interpret trait - This separates concerns dramatically! Yay! - Implement block scoping via Frame abstraction - TODO: is this the right abstraction? - TODO: Modules?? - TODO: What environment should be passed into a function call? ast: - rename Name.name to Name.symbol (name.name.name.name.name.name.name is very readable, yes yes)John2024-01-05 17:48:19 -0600
9eafae0757resolver: Whoops! Commit early WIP resolver.John2024-01-05 17:44:09 -0600
79fda16788cl 0.0.2: MAJOR ERGONOMIC BOOSTJohn2024-01-04 02:18:09 -0600
9b7cf9c017lexer: Add :: and #! tokensJohn2023-10-30 19:17:03 -0500
c3e02d21adsample-code: Add some sample Conlang programs :DJohn2023-10-30 00:23:43 -0500
c1c834701aparser: Mockup type-expression syntax - Allow name: Type notation for parameters - Allow fn x() -> RetVal notation for return values - TODO: Create syntax for type-expressions/pathsJohn2023-10-30 00:07:27 -0500
374017d5e3examples/interpret: Call main if loading from fileJohn2023-10-29 23:48:38 -0500
ee5dabb4f3Conlang: Implement functions 1.0 (Resolves#12) - [x] Call syntax - [x] Function declaration syntax TODO: - [ ] Any form of type checking - [ ] Static variable resolution - [ ] Closures, etc.John2023-10-29 23:47:00 -0500
f3306e7ba4examples/format: Rename from parse_inputJohn2023-10-29 21:10:09 -0500
9a6eb6b0f1examples/interpret: Improve the repl's UX somewhatJohn2023-10-29 01:14:36 -0500
8fe89e6297conlang: Variable binding and cleanup ast: Separate concerns, and remove Walk interpreter: implement variable bindingJohn2023-10-29 01:13:48 -0500
35d214c9f6ast: Remove vestigial "ignore" in ExprJohn2023-10-27 00:19:19 -0500
ac540ebd22parser: parse let statements - TODO: Type expressions token: Add mut keywordJohn2023-10-27 00:18:02 -0500