Commit Graph

263 Commits

Author SHA1 Message Date
068d0e8563 Add array:to() to split out functionality of array:from() 2024-07-10 13:42:58 -04:00
10e86153a2 Replace array:slice() with array:from(first, last) and array:by(step) 2024-07-10 13:34:45 -04:00
a86dc05d36 Cache AST parsings so we don't have to re-parse files 2024-07-05 15:51:23 -04:00
f4dee58f03 Check for functions that don't return when they need to, as well as a
fix for 'when' statement typing
2024-07-04 18:27:08 -04:00
6a105fbd80 Add 'defer' 2024-07-04 18:00:01 -04:00
9d9fe12987 Add !! statement for printing text 2024-07-04 16:23:05 -04:00
22063462a9 Add __length and __negative metamethods 2024-07-04 13:37:23 -04:00
f391c929e5 Add math metamethods (__add, __sub, etc.) 2024-07-01 11:12:00 -04:00
8724dcd821 Fix issue with using libraries 2024-06-19 16:09:22 -04:00
5bfc15c975 Fix issue with binding 'foo := use baz' 2024-06-16 19:52:55 -04:00
ae538ba9eb Properly produce an error for foo := use -lbaz 2024-06-16 18:43:37 -04:00
28de9aeb84 Deprecate '-l' as a command line flag but instead support 'use -lblah' 2024-06-16 18:40:34 -04:00
32e82fdbe3 Remove some dead code and support -l as a tomo flag 2024-06-16 18:09:54 -04:00
9f8be0c502 Support library name as a separate environment field from namespace 2024-06-16 16:08:35 -04:00
7a53e10826 Fix issue with type namespaces not getting properly prefixed by library
namespace
2024-06-16 15:12:00 -04:00
729d856139 Better error reporting 2024-06-14 13:45:01 -04:00
6f11f5cbb4 Replace non-identifier characters with '_' when generating prefixes 2024-06-13 22:56:45 -04:00
81d55cacb7 Do dynamic library symbol prefixing using 'patchelf' 2024-06-13 21:20:50 -04:00
dab2c399f1 Split import/use into separate concepts 2024-06-13 13:17:51 -04:00
5757a5023c Support loading shared libraries 2024-06-13 12:59:19 -04:00
39ac885125 Change c/header transpilation order and fix some issues 2024-06-08 14:39:52 -04:00
f834073264 Fix issue with importing modules 2024-06-06 16:36:49 -04:00
fdaadee133 Fix imported symbol prefixes 2024-05-31 20:32:02 -04:00
8df8f5bb82 Changes to dependency tracking, compilation, and object linking 2024-05-28 00:30:09 -04:00
308946e794 Switch optional detection to use 'when .. is @..' instead of 'if .. :=
..'; also fixed a bug with stack memory in doctests
2024-05-24 00:03:46 -04:00
fba2b99b65 Support 'while when' 2024-05-23 12:40:21 -04:00
2d0834f1d8 Better error message 2024-05-22 13:34:32 -04:00
b1db4fd0f6 Improve codegen for enums and structs (change $tag$Foo$Baz to
Foo$tag$Baz)
2024-05-21 20:14:57 -04:00
b0d1daa0f3 Fix up some binding order issues and also some inline C issues with
heap_pop()
2024-05-19 01:46:30 -04:00
4f2421aeea Tweak inline C code 2024-05-18 21:18:08 -04:00
1df26851d7 Add syntax for "inline C(...)" 2024-05-18 16:31:34 -04:00
a1d18fd422 Add C string type 2024-05-18 14:38:41 -04:00
77fb880cc4 Better error messages 2024-05-14 13:42:06 -04:00
495a597ef6 Better error messages 2024-05-14 13:38:53 -04:00
1924f75647 Support corecursive structs 2024-05-14 13:30:46 -04:00
02fe49a764 Deprecate interfaces (RIP) 2024-05-12 20:13:19 -04:00
ff9f4fe6cf Add TODO message 2024-05-12 16:27:03 -04:00
3481042259 Simplify interfaces by requiring all functions are pointer methods 2024-05-12 15:56:24 -04:00
4dbe046866 Add interface fields 2024-05-12 15:18:46 -04:00
d143c72b22 WIP, but functional interfaces 2024-05-12 13:50:06 -04:00
c2daf6a928 Clean up 'when' syntax 2024-05-01 13:53:51 -04:00
2e27b88c1b Improved syntax for optionals 2024-04-30 13:18:47 -04:00
5910998a19 Don't import "main" 2024-04-25 12:51:04 -04:00
061ec4fd8f Support naked 'use' statements 2024-04-24 13:53:37 -04:00
6308325252 Add constructor/casting for ints and nums 2024-04-23 13:12:49 -04:00
005427744d Prevent shadowing variables 2024-04-23 13:04:31 -04:00
7a175d3b45 Catch namespace clobbering of types 2024-04-23 13:03:47 -04:00
fbb25decf0 Support struct literals as constants 2024-04-23 12:50:30 -04:00
3590bf3407 Better imports for types 2024-04-21 14:58:33 -04:00
3b0dce04a0 Add heapify(), heap_push(), and heap_pop() 2024-04-19 13:29:04 -04:00
e98f6854f5 Use leading underscore for file-local variables and functions instead of
"private" keyword
2024-04-17 13:44:01 -04:00
369c601a56 Invert escaping so user symbols get prepended with "$" and builtin
symbols don't
2024-04-16 13:50:07 -04:00
fae2b2caa0 Add array:sample() 2024-04-02 23:28:59 -04:00
95100469b6 Add array:sorted() 2024-04-02 13:13:33 -04:00
c73e96ff91 Add comparison operator <> and array method to sort by a custom
comparison function
2024-04-02 13:08:06 -04:00
04d9adc813 Switch naming convention to use '$' in symbols more 2024-03-29 12:54:31 -04:00
d94053ca77 Add array:reversed() 2024-03-26 14:59:52 -04:00
1c9d47c29f Print ASTs as XML instead of janky custom syntax 2024-03-24 19:04:57 -04:00
5157988efa Implement 'extern' functionality 2024-03-24 15:06:59 -04:00
f21fc700bb Handle type namespaces in other modules 2024-03-22 01:52:00 -04:00
4592e95fa9 Pull namespaces from the type binding 2024-03-21 13:33:10 -04:00
a47bd2d569 Improvements to module imports 2024-03-19 23:29:32 -04:00
80ea0f8507 Corecursive modules 2024-03-19 14:30:40 -04:00
adbb07fdc2 Module imports 2024-03-19 14:22:03 -04:00
7c0a77df33 Handle function type annotations without returns better 2024-03-18 15:27:07 -04:00
6905f759e5 Empty enums use a singleton instead of a constructor 2024-03-17 22:06:55 -04:00
212dfa44ae Fix error message 2024-03-17 21:49:52 -04:00
655b677895 Preface symbols with file prefix 2024-03-17 20:40:40 -04:00
46ee3fc0ef Temporary fix for newlines between statements 2024-03-17 15:59:06 -04:00
a0faef7102 Support nested comprehensions 2024-03-17 15:26:25 -04:00
9932841530 Improve comprehensions for both arrays and tables 2024-03-17 14:46:36 -04:00
fdc3eadba2 Array comprehensions 2024-03-14 02:37:56 -04:00
a33f730617 Rearranging some files 2024-03-10 00:03:21 -05:00
cbdd357b41 Deprecate secret langs (just use one-member structs) 2024-03-09 19:02:13 -05:00
5131fdff62 Improve handling of secret text 2024-03-09 18:47:56 -05:00
2b83ab279d Add langs to the language 2024-03-09 18:22:12 -05:00
b04a1b3090 Implement lambdas and closures 2024-03-09 16:03:38 -05:00
955f047e06 First pass at lambdas/closures 2024-03-09 14:02:19 -05:00
8427037bb9 Refactor table methods to take table structs where possible 2024-03-08 14:33:54 -05:00
55eacb8a04 Array methods 2024-03-08 14:25:17 -05:00
07c2b0ec26 Array methods 2024-03-08 14:23:16 -05:00
425466ce6e Add 'if x := var' conditionals for optional pointers 2024-03-06 13:36:36 -05:00
38d5245a9a Fix up some min/max stuff 2024-03-05 14:46:01 -05:00
558c8588ee Fix default values for structs 2024-03-05 12:55:38 -05:00
103edd6362 Fix cyclic structs/enums 2024-03-05 12:49:13 -05:00
e29aa52460 Struct and enum methods and static members 2024-03-04 13:51:47 -05:00
8fab88c56f Rename Str -> Text 2024-03-03 18:15:45 -05:00
ec7a9e5f10 Initial pass at namespacing 2024-03-03 13:04:50 -05:00
4dc70c84d4 First working method calls 2024-02-29 13:49:24 -05:00
8171a38b71 Add type namespaces 2024-02-29 13:28:39 -05:00
55d44fe9f2 Tweaks 2024-02-27 12:46:14 -05:00
8f5a40b944 Typecheck inline C code 2024-02-25 17:43:52 -05:00
70f7f15781 Implement reductions 2024-02-25 15:28:46 -05:00
5344789d8a More stringent requirements on '&' refs 2024-02-25 14:17:37 -05:00
f7d403c358 WIP on stackrefs 2024-02-25 13:04:35 -05:00
106704b956 Improve enums with metamethods 2024-02-24 15:24:44 -05:00
e2520d817c Type constructors are global 2024-02-24 14:41:59 -05:00
50fedc8f44 Fixing up structs 2024-02-24 14:29:40 -05:00
9aec32149f Code cleanup for KeywordArg 2024-02-23 12:50:01 -05:00
9e2645ade7 Fix up keyword args and default args 2024-02-22 22:15:09 -05:00
54b8b7af12 Fix function compiling 2024-02-22 13:35:28 -05:00
bfdb2da9e1 Implement power (^) 2024-02-22 13:09:46 -05:00
663182abdf Implement concatenation 2024-02-22 13:00:27 -05:00
2ecd8e11fd Implement 'when' statement for matching on enums 2024-02-22 12:45:12 -05:00
f9cc44f145 Fixing up enums 2024-02-20 13:06:03 -05:00
eabff011ea Add in '#' operator for length 2024-02-18 01:27:25 -05:00
221be79e88 Add enum as_string() 2024-02-18 01:00:47 -05:00
8f451d0271 Custom tostring functions working 2024-02-17 21:04:35 -05:00
26723deea2 Incremental fixes 2024-02-17 20:47:43 -05:00
b34c5c5774 Fix up doctests 2024-02-17 20:07:04 -05:00
d46925dbfa Cleanup of builtins 2024-02-17 19:32:30 -05:00
7355b2f7fe Change things up to use type params for all array and table methods 2024-02-17 18:38:29 -05:00
5c49314ed4 Add typechecking logic 2024-02-17 17:00:21 -05:00