Commit Graph

258 Commits

Author SHA1 Message Date
30d39378c7 Optional C Strings 2024-09-11 12:39:56 -04:00
210179ee67 Optional enums (deprecated custom tag values) 2024-09-11 12:29:48 -04:00
dee3742b48 Optional structs 2024-09-11 12:01:17 -04:00
989dc3f442 Support if x := blah: ... 2024-09-11 01:48:15 -04:00
23209a0aab Use optional ints in the array find()/first() API 2024-09-11 01:39:19 -04:00
7126755275 Add optional types 2024-09-11 01:31:31 -04:00
cc94afcc56 Test nesting parens and escapes 2024-09-09 15:03:51 -04:00
dad567bfc8 Restore path interpolation 2024-09-09 14:37:13 -04:00
900b456a26 Ensure more rigoroous cleanup and validation of paths 2024-09-09 14:35:00 -04:00
e16792d5eb Add Text.starts_with() and Text.ends_with() 2024-09-09 05:31:25 -04:00
0b441054b3 Fix up some path logic 2024-09-09 04:49:02 -04:00
4f2de3568f More tests 2024-09-09 03:52:56 -04:00
a306f94557 Add mktemp functionality 2024-09-09 02:43:15 -04:00
b0d806a1f0 Add unicode name escapes: \U[penguin] 2024-09-07 01:43:36 -04:00
11fa4f548c Support 'when' statements as expressions 2024-09-06 14:15:55 -04:00
b36d4eaf67 Fix test 2024-09-06 12:17:43 -04:00
c789d25878 Text overhaul 2024-09-06 03:29:07 -04:00
44892df4c5 Add Text.trim() 2024-09-06 00:03:28 -04:00
47e8972427 Update 'use' test to include a '../examples/vectors.tm' import as well
as an unnamed import
2024-09-05 15:49:18 -04:00
34d98f067e For big or arbitrarily big integers not known to be constant, do full
Int$plus(a,b) logic so it's definitely correct and doesn't error.
2024-09-05 12:41:13 -04:00
d801681026 Add early outs for (or) and (and) reducers 2024-09-05 11:51:07 -04:00
73df39ff7e Fix stability of concatenation 2024-09-05 03:47:15 -04:00
3a556296b6 Add Text:repeat() 2024-09-04 21:22:03 -04:00
00543b4e87 Add Text.map(pat, fn) 2024-09-04 21:02:37 -04:00
df844946f7 Add Text:matches() for convenience and performance 2024-09-04 00:34:27 -04:00
b8bb4ada8b Add recursive mode to text replacement and update docs 2024-09-03 23:16:45 -04:00
850fc8fbe1 Clean up text replacement API to use backrefs instead of match_chain() 2024-09-03 22:56:53 -04:00
c14ed3e3e7 Add Text.replace_all({Pattern:Text}) and tweak API for replacement to
support placeholders
2024-09-03 20:48:11 -04:00
91c5dc61c1 Change pattern syntax from [..pat] to {pat} 2024-09-03 14:27:09 -04:00
64143f0a13 Syntax overhaul (comments back to #, print statments to !!),
using `$/.../` for patterns and using a DSL for patterns
2024-09-03 13:19:41 -04:00
5feecff9d9 Deprecate Where and change channel API to use a boolean front value 2024-09-03 03:53:36 -04:00
5f0b099e14 Better behavior for invalid character names 2024-09-03 01:32:00 -04:00
b517f3b287 Fix codepoint names by falling back to block names 2024-09-03 01:30:07 -04:00
e98e77e1d3 Fix for missing codepoint names 2024-09-03 01:20:36 -04:00
5441e6f287 Update docs 2024-09-03 00:54:48 -04:00
6c22999ede Add text slicing 2024-09-02 23:56:08 -04:00
5aa5a5e99b Fix some stuff around Text:find() and text indexing 2024-09-02 23:47:16 -04:00
5d6fa135b1 Add Text:find_all() 2024-09-02 23:26:55 -04:00
9d2e9c02fe Fix splitting an empty string 2024-09-02 23:24:16 -04:00
6e4be93848 Add Text:join() and tests 2024-09-02 23:13:02 -04:00
6d7e09bf18 Add Text:split() and use that with an empty pattern instead of Text:clusters() 2024-09-02 23:07:08 -04:00
9214e621bf Add Text:lines() 2024-09-02 22:57:49 -04:00
5c093e6a4a Improve test 2024-09-02 22:42:02 -04:00
708acda54e WIP fixes for synthetic graphemes and adding some text conversion
methods
2024-09-02 22:30:19 -04:00
96f276ec18 Fix test 2024-09-02 21:19:57 -04:00
cac560fdc3 Text fixes 2024-09-02 21:18:15 -04:00
620ebeab8d Fixing string methods 2024-09-02 20:22:13 -04:00
a4454df4b9 Bugfix int parsing 2024-09-02 19:23:35 -04:00
ad51b208b4 Overhaul of import syntax. Now everything uses use: use foo, `use
./foo.tm`, `use <foo.h>`, `use libfoo.so`
2024-08-22 14:02:48 -04:00
3c4f477b84 Bugfix some copy-on-write cases for when pointers are automatically
derefenced for method calls
2024-08-20 16:20:41 -04:00
934b843b1c Add .text_content as a field on DSLs instead of a method 2024-08-19 14:29:58 -04:00
4765bb4120 Update test to reflect new numeric precision 2024-08-19 12:40:29 -04:00
70d6a18f59 Add test for importing initialized values 2024-08-19 00:53:28 -04:00
8363d53bd2 Update channel API to take a Where parameter 2024-08-18 23:59:13 -04:00
9e07c6adc7 Add Channel:peek() 2024-08-18 23:31:36 -04:00
2e8c949fdc Rename push/pop to give/get, since it's not stack-ordered 2024-08-18 23:24:23 -04:00
7472837ee5 Add array:first(predicate:func(x:&T)->Bool)->@%T? 2024-08-18 22:28:04 -04:00
6f3b2c073a Add enum.tag as a way to do a boolean test for whether a value has a
particular tag or not
2024-08-18 20:58:36 -04:00
967b649da2 Deprecate # operator in favor of .length and fix up some issues 2024-08-18 20:39:57 -04:00
a49870f810 Add primality testing and next_prime()/prev_prime() 2024-08-18 15:22:51 -04:00
f4b04a1b8c Improved syntax for dollar-string literals 2024-08-18 14:44:15 -04:00
04603308af Tweak test code 2024-08-18 12:52:53 -04:00
bac188ce07 Change division and modulus to use euclidean division, plus fix up a few
integer bugs
2024-08-16 14:24:20 -04:00
ce6f312c94 Add binary search test 2024-08-15 14:01:36 -04:00
5a0502bdf5 Fix some edge cases 2024-08-13 14:13:02 -04:00
f4011eb489 Remove test 2024-08-13 02:46:56 -04:00
80af2ea547 Fixes 2024-08-13 02:21:21 -04:00
158a1c6ad2 More fixes 2024-08-13 02:09:18 -04:00
d08f795794 Partially working first draft of bigints 2024-08-13 01:30:25 -04:00
c139ba2aae Fix old syntax 2024-08-12 17:43:01 -04:00
8b564f6dd1 Fix deadlock issue 2024-08-12 17:42:51 -04:00
d2f4d07585 Support channels with maximum size 2024-08-11 15:04:22 -04:00
2ecb5fe885 Add channels and threads 2024-08-11 14:47:34 -04:00
6d3d104363 Overhaul of operator metamethods 2024-08-10 20:50:15 -04:00
b37bd70b60 For tables, deprecate support for square bracket indexing and .default
values, replacing them with a `:bump()` function for tables with numeric
values. This means that counters can be implemented easily without the
need to mask complexity.
2024-08-10 16:03:41 -04:00
8d3d591312 Add Sets to the language 2024-08-10 15:15:38 -04:00
cb6cebf12e Add test for iterators 2024-08-10 14:52:53 -04:00
416300287f Add test for ranges 2024-08-10 14:52:42 -04:00
f78cd6357a Change table removal function to use values instead of references 2024-08-08 13:20:38 -04:00
279cd23143 Micro optimization for iterating over array ranges 2024-07-20 17:13:15 -04:00
fb95bbb1d4 Deprecate array:pairs() and switch iterator functions to use enums 2024-07-20 16:45:13 -04:00
d3f14cf53c Support nested lambda closures 2024-07-14 14:13:23 -04:00
f64aaf5960 Add array:pairs() 2024-07-13 18:05:14 -04:00
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
e51e6f840c Tweak syntax for debug prints 2024-07-05 01:55:02 -04:00
2c89f3385f Fixes for defer statements in lambdas 2024-07-04 18:09:33 -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
38622ccbec Change metamethod names 2024-07-04 13:40:09 -04:00
22063462a9 Add __length and __negative metamethods 2024-07-04 13:37:23 -04:00
ba66a51a9e Add multiline string literal test 2024-07-01 13:09:26 -04:00
7dc8189266 Add test for optionals 2024-07-01 12:30:22 -04:00
37a7beb28f Add test for metamethods 2024-07-01 12:30:07 -04:00
ed935eb882 Fix array_lvalue 2024-06-18 01:32:44 -04:00
f5dc37c86c Add test for array member assignment 2024-06-18 01:31:23 -04:00
7e261bea9b Fix 'use' test to use 'import' instead 2024-06-17 17:33:32 -04:00
bf3cdc3dfa Refine the parsing of blocks so it's always ':' [inline-block] [indent indented-block] 2024-05-23 13:09:59 -04:00
fba2b99b65 Support 'while when' 2024-05-23 12:40:21 -04:00
5b1960859f Hook up Text.has(), Text.trimmed(), Text.without() 2024-05-20 15:19:31 -04:00
1924f75647 Support corecursive structs 2024-05-14 13:30:46 -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
3c0a8f0b89 Syntax tweak: use ':' for blocks 2024-04-28 14:58:55 -04:00
6308325252 Add constructor/casting for ints and nums 2024-04-23 13:12:49 -04:00
5fd85d7e0b Add Num.mix() 2024-04-22 14:49:36 -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
63e6ba596a Change table syntax to {key:value} instead of {key=>value} 2024-04-13 13:39:44 -04:00
6c01eef851 Introducing the main() function 2024-04-12 13:09:31 -04:00
0f9c1f4eb4 Add corecursive func test 2024-04-10 11:53:18 -04:00
bec67efb11 Add test for array:sample() 2024-04-02 23:41:26 -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
d94053ca77 Add array:reversed() 2024-03-26 14:59:52 -04:00
5157988efa Implement 'extern' functionality 2024-03-24 15:06:59 -04:00
5f3dac786c Clean up codegen for empty tagged data 2024-03-17 22:17:21 -04:00
6905f759e5 Empty enums use a singleton instead of a constructor 2024-03-17 22:06:55 -04:00
47f627f5dd Update test 2024-03-17 21:48:53 -04:00
ccba8abf73 Add tests for nested comprehensions 2024-03-17 15:28:46 -04:00
9932841530 Improve comprehensions for both arrays and tables 2024-03-17 14:46:36 -04:00
5c2bb00baf Add conditional loop comprehension 2024-03-17 12:50:17 -04:00
341087026c More array tests 2024-03-17 12:49:28 -04:00
8847eaa660 Bugfix for looping 2024-03-14 02:44:37 -04:00
89d7098654 Add test for secret structs 2024-03-09 19:06:09 -05:00
170c0a4197 Add lang tests 2024-03-09 19:03:35 -05:00
2b83ab279d Add langs to the language 2024-03-09 18:22:12 -05:00
5cfc01ac09 Add function/caching test 2024-03-09 16:46:25 -05:00
00d4e98ba1 Extra lambda test 2024-03-09 16:08:03 -05:00
b04a1b3090 Implement lambdas and closures 2024-03-09 16:03:38 -05:00
a13f642679 Tweaking tests 2024-03-09 14:12:15 -05:00
1627a913a4 Lambda fixes/improvements 2024-03-09 14:09:18 -05:00
dfd38cdb69 Simple lambda test 2024-03-09 14:03:42 -05:00
06549741aa Tweaking array tests 2024-03-07 12:21:39 -05:00
6583221c0b More tests 2024-03-07 12:18:01 -05:00
cd1785b5cb Added test 2024-03-07 12:07:14 -05:00
4e6001fa55 Add num32 test 2024-03-07 12:00:16 -05:00
558c8588ee Fix default values for structs 2024-03-05 12:55:38 -05:00
0b7ca098ae Fix some bugs relating to NUL termination of strings 2024-03-04 01:34:12 -05:00
1f6aa4cac7 Add methods for text:clusters(), text:codepoints(), text:bytes() 2024-03-03 19:40:01 -05:00
dc04286e3a Unicode normalization for equality, hashing, tests, and printing 2024-03-03 19:12:53 -05:00
d8a533cdf0 Rename string test to text 2024-03-03 18:19:56 -05:00
8fab88c56f Rename Str -> Text 2024-03-03 18:15:45 -05:00
07f0a18136 Fix endptr stuff in parser 2024-03-03 17:52:22 -05:00
0fe255a7c1 Fix up unicode escapes 2024-03-03 17:49:40 -05:00
0c51ca73e0 String tests 2024-03-03 17:30:31 -05:00
94ab8c0ac6 Add some more tests 2024-03-03 17:24:46 -05:00
6a39b0cd3f Num tests 2024-03-03 17:23:54 -05:00
c607b97732 Add Num.near() function 2024-03-03 17:14:11 -05:00
c5f315e338 Num methods 2024-03-03 16:44:45 -05:00