b115fea71b 
					 
					
						
						
							
							cl-interpret: fix import in builtin! doctest  
						
						 
						
						
						
						
					 
					
						2025-02-21 22:49:14 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						088cd4d1e4 
					 
					
						
						
							
							cl-interpret: Change format of todo for Impl  
						
						 
						
						
						
						
					 
					
						2025-02-20 22:05:23 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						0fd9c002fc 
					 
					
						
						
							
							cl-interpret: Interpret items in a file in a particular order  
						
						 
						
						... 
						
						
						
						1) mod
2) use
3) enum, struct, type
4) fn
5) impl
6) const | static
This is a stopgap until names are statically resolved 
						
						
					 
					
						2025-02-20 22:04:27 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						772286eefa 
					 
					
						
						
							
							conlang: Single-expression functions  
						
						 
						
						
						
						
					 
					
						2025-02-20 21:59:42 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						a6ad20911d 
					 
					
						
						
							
							builtins: Add temp builtin for dumping the global string pool  
						
						 
						
						
						
						
					 
					
						2025-02-18 21:49:59 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						01cf9d93e2 
					 
					
						
						
							
							cl-repl: Usability improvements  
						
						 
						
						... 
						
						
						
						- Don't print empty
- Don't needlessly append newline to cleared screen 
						
						
					 
					
						2025-02-18 21:48:36 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						edabbe1655 
					 
					
						
						
							
							cl-interpret: process use items and imports in the interpreter  
						
						 
						
						
						
						
					 
					
						2025-02-18 21:44:52 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						af9c293907 
					 
					
						
						
							
							cl-interpret, cl-repl:  
						
						 
						
						... 
						
						
						
						Move IO builtins into the CLI, so get_line can use repline keybinds. 
						
						
					 
					
						2025-02-06 21:35:17 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						0e3ba342c4 
					 
					
						
						
							
							cl-interpret: make the error type smaller (at the cost of a heap allocation)  
						
						 
						
						
						
						
					 
					
						2025-01-31 03:35:35 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						d95d35268e 
					 
					
						
						
							
							cl-interpret: Builtin refactor  
						
						 
						
						... 
						
						
						
						- Everything is different now
  - Builtins are now built on top of Rust functions, so they can be recursive!
  - TODO: allow macro-defined builtins to call each other?
- The builtins! macro is a lot nicer to work with
  - No redundant return value
  - Maps the result over Into::into, allowing for type inference!
  - Uses explicit pattern syntax instead of weird binding, where possible
  - Does not #[allow(unused)], so you'll get unused variable warnings now! 
						
						
					 
					
						2025-01-31 03:34:45 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						0c2b0002ce 
					 
					
						
						
							
							conlang: Docs!  
						
						 
						
						
						
						
					 
					
						2025-01-29 05:07:08 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						026681787a 
					 
					
						
						
							
							cl-interpret: Add a new pretty-debug-printer builtin  
						
						 
						
						
						
						
					 
					
						2025-01-29 04:16:28 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						80e1219808 
					 
					
						
						
							
							cl-interpret: Tests for new pattern matching behavior  
						
						 
						
						... 
						
						
						
						TODO: Expand control flow tests 
						
						
					 
					
						2025-01-29 04:15:57 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						6ee9bbd72e 
					 
					
						
						
							
							conlang: PATTERN MATCHING AND DESTRUCTURED BINDINGS WOOOOO  
						
						 
						
						... 
						
						
						
						- Integrate the Match and Pattern nodes into the AST
  - TODO: `let x: T` is ambiguous with `let x: {}`. Currently the latter takes precedence in the parser.
- Implement pattern matching through unification in the interpreter.
  - It's not fast, but it works!
- Refactor destructuring assignments to use the new pattern functionality 
						
						
					 
					
						2025-01-29 04:15:33 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						6e94b702c9 
					 
					
						
						
							
							cl-ast: Add pattern and match nodes, and associated behaviors  
						
						 
						
						
						
						
					 
					
						2025-01-29 04:05:11 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						d21683ad61 
					 
					
						
						
							
							conlang: Add Quote expression as a hack for testing  
						
						 
						
						... 
						
						
						
						Possibly removed later, or replaced with something that turns Conlang AST nodes into Conlang data structures. 
						
						
					 
					
						2025-01-29 03:56:19 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						518fbe74a1 
					 
					
						
						
							
							cl-ast: Fix AddrOf misbehavior  
						
						 
						
						
						
						
					 
					
						2025-01-29 03:31:24 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						86c4da0689 
					 
					
						
						
							
							cl-repl: Don't print ConValue::Empty return values  
						
						 
						
						
						
						
					 
					
						2025-01-28 06:55:03 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						5db77db6b8 
					 
					
						
						
							
							cl-interpret: Use dyn dispatch for iterators.  
						
						 
						
						... 
						
						
						
						- This is a hack because the language has the syntax but no concept of iterators 
						
						
					 
					
						2025-01-28 06:25:04 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						145a24c5ff 
					 
					
						
						
							
							cl-interpret: Assignment 2.0, now with more destructuring!  
						
						 
						
						... 
						
						
						
						TODO: Destructuring `let`, destructuring patterns in function args..? 
						
						
					 
					
						2025-01-28 06:23:37 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						485afb7843 
					 
					
						
						
							
							cl-interpret: Make ConValues act like value types  
						
						 
						
						... 
						
						
						
						(Aside from the fact that they're smothered in heap allocations) 
						
						
					 
					
						2025-01-28 06:20:10 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						01871bf455 
					 
					
						
						
							
							cl-interpret: get_line builtin!  
						
						 
						
						
						
						
					 
					
						2025-01-28 06:14:05 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						fd361f2bea 
					 
					
						
						
							
							cl-interpret: Upvars 2.0  
						
						 
						
						... 
						
						
						
						- Only captures locals 
						
						
					 
					
						2025-01-28 06:13:38 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						0eef6b910c 
					 
					
						
						
							
							cl-interpret/collect_upvars: elide lifetime  
						
						 
						
						
						
						
					 
					
						2025-01-23 18:53:07 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						c50940a44c 
					 
					
						
						
							
							cl-interpret: Make an attempt at closures  
						
						 
						
						... 
						
						
						
						(It kinda sucks, but it emulates closures half decently) 
						
						
					 
					
						2025-01-23 16:23:42 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						3cda3d83d9 
					 
					
						
						
							
							typeck: Replace unsafe static mut with tree interning,  
						
						 
						
						... 
						
						
						
						I used tree interning here, because the interner already contains the necessary locks to make it Sync, and I was lazy. Be my guest if you want to do something else.
The computational overhead of interning the ASTs here is negligible, since this is all CLI code anyway. 
						
						
					 
					
						2025-01-16 21:16:46 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						e5a51ba6c2 
					 
					
						
						
							
							cl-structures: add to_ref associated function on Interned type, for non-borrowing conversion  
						
						 
						
						
						
						
					 
					
						2025-01-16 21:01:28 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						883fd31d38 
					 
					
						
						
							
							conlang: Elide lifetimes (fixes clippy lint)  
						
						 
						
						
						
						
					 
					
						2025-01-16 20:57:33 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						d71276b477 
					 
					
						
						
							
							cl-structures: Update error type in unstable get_many_mut feature for IndexMap  
						
						 
						
						
						
						
					 
					
						2025-01-16 20:32:09 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						d8e32ee263 
					 
					
						
						
							
							cl-arena: promote to its own independent repository  
						
						 
						
						
						
						
					 
					
						2025-01-16 20:30:23 -06:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						df68d6f2e6 
					 
					
						
						
							
							cl-interpret/tests: Fix broken test  
						
						 
						
						
						
						
					 
					
						2024-09-19 14:29:21 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						f4fe07a08b 
					 
					
						
						
							
							cl-lexer: Hack around ambiguity between 1.0 and 1..0  
						
						 
						
						... 
						
						
						
						This requires more than one token lookahead, but is already part of a hack itself, so... /shrug 
						
						
					 
					
						2024-09-19 14:02:02 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						94be5d787f 
					 
					
						
						
							
							cl-ast: always pretty-print decimal for floats  
						
						 
						
						
						
						
					 
					
						2024-09-19 14:00:22 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						5deb585054 
					 
					
						
						
							
							cl-ast: Add float support  
						
						 
						
						... 
						
						
						
						- Smuggle floats as integers to maintain `eq`
- This is bad, but not terrible for spec-compliant floats. Might have issues with NaN.
cl_parser: Smuggle floats
cl_interpret: unpack smuggled floats in float literal node 
						
						
					 
					
						2024-09-19 13:20:19 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						56e71d6782 
					 
					
						
						
							
							cl-lexer: Add a hacky workaround for float support.  
						
						 
						
						... 
						
						
						
						It's disgusting, but better than nothing! 
						
						
					 
					
						2024-09-19 13:16:27 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						fad28beb05 
					 
					
						
						
							
							interpreter: Add float machinery  
						
						 
						
						... 
						
						
						
						- operators
- type casting 
						
						
					 
					
						2024-09-18 01:02:09 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						0f8b0824ac 
					 
					
						
						
							
							cl-parser: Fix precedence of comparison operators  
						
						 
						
						
						
						
					 
					
						2024-09-18 00:57:44 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						99a00875a8 
					 
					
						
						
							
							cl-intern: Derive Default for StringInterner and TypedInterner  
						
						 
						
						
						
						
					 
					
						2024-08-24 18:18:22 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						8675f91aca 
					 
					
						
						
							
							cl-ast: Remove tail from let (it caused more problems that it could've solved)  
						
						 
						
						
						
						
					 
					
						2024-07-31 03:19:20 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						de63a8c123 
					 
					
						
						
							
							cl-parser: Outline precedence parser  
						
						 
						
						
						
						
					 
					
						2024-07-31 02:55:01 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						533436afc1 
					 
					
						
						
							
							cl-parser: Move precedence parser into its own module  
						
						 
						
						
						
						
					 
					
						2024-07-31 02:48:39 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						1eb0516baf 
					 
					
						
						
							
							cl-parser: Rearrange to match cl-ast  
						
						 
						
						... 
						
						
						
						Also reorder `Let` in the AST 
						
						
					 
					
						2024-07-31 02:35:41 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						97808fd855 
					 
					
						
						
							
							cl-parser: Transliterate to a trait-based parsing implementation  
						
						 
						
						... 
						
						
						
						Bump version number. 
						
						
					 
					
						2024-07-31 01:39:00 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						388a69948e 
					 
					
						
						
							
							Revert "cl-ast: Unify break, return, and unary expressions"  
						
						 
						
						... 
						
						
						
						This reverts commit adb0fd229c . 
						
						
					 
					
						2024-07-30 22:31:39 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						5e7ba6de24 
					 
					
						
						
							
							cl-ast: Improve formatting of blocks and groups  
						
						 
						
						
						
						
					 
					
						2024-07-30 20:40:22 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						adb0fd229c 
					 
					
						
						
							
							cl-ast: Unify break, return, and unary expressions  
						
						 
						
						
						
						
					 
					
						2024-07-30 20:16:07 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						0e545077c6 
					 
					
						
						
							
							cl-ast: Remove "Continue" struct  
						
						 
						
						
						
						
					 
					
						2024-07-30 19:42:28 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						b64cc232f9 
					 
					
						
						
							
							cl-ast: Move loop expression into unary exprs (with lowest priority)  
						
						 
						
						
						
						
					 
					
						2024-07-30 18:21:25 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						b0341f06fd 
					 
					
						
						
							
							cl-ast: Move let into Expr  
						
						 
						
						
						
						
					 
					
						2024-07-30 18:02:09 -05:00  
					
					
						 
						
						
							
							
							 
							
							
							
							
							 
						
					 
				 
			
				
					
						
					 
					
						
						
							
						
						a3e383b53f 
					 
					
						
						
							
							cl-token: Flatten TokenKind into a single enum (wow!)  
						
						 
						
						
						
						
					 
					
						2024-07-30 16:47:09 -05:00