Commit Graph

161 Commits

Author SHA1 Message Date
d1b2e9f598 Disallow 'use' statements that aren't top level 2024-09-04 13:48:26 -04:00
29a87ff325 Support literal Text("blah") for text that is constant ASCII strings 2024-09-03 14:48:54 -04:00
6d7a359f8f Bugfix some text replacement things 2024-09-02 19:49:52 -04:00
61e482f6f3 Initial WIP first past 2024-09-02 18:47:39 -04:00
dceb925573 Bugfix for parsing ints 2024-08-23 11:38:54 -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
2055439be4 Variables can no longer hold function pointers, only closure_t's. This
makes error reporting easier and prevents issues where some functions
could be assigned, but not others. Also change outputs so Void returns
don't show up when displaying types, now just: `func()`
2024-08-21 00:49:22 -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
3ce239760e Remove TODO 2024-08-19 19:17:01 -04:00
934b843b1c Add .text_content as a field on DSLs instead of a method 2024-08-19 14:29:58 -04:00
3ddaf92505 Bugfix :text_content() for DSLs 2024-08-19 13:21:28 -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
967b649da2 Deprecate # operator in favor of .length and fix up some issues 2024-08-18 20:39:57 -04:00
f4b04a1b8c Improved syntax for dollar-string literals 2024-08-18 14:44:15 -04:00
da4d07c665 Fix up some bigint logic issues 2024-08-18 12:47:29 -04:00
752ab8212c Split BigIntType out of IntType and switch to using enums for the size
of ints/nums
2024-08-18 11:49:51 -04:00
de31398fe4 Add table:get_or_null(key) for tables with non-null pointer values,
which lets get() keep the non-null return type
2024-08-17 15:01:01 -04:00
2d3c114435 Check for compile-time constant integers that require heap allocations. 2024-08-16 02:29:07 -04:00
6d24438509 More helpful error message for table indexing 2024-08-15 14:52:41 -04:00
688f883e16 Add array:find() 2024-08-15 03:01:04 -04:00
66ae30ac29 Add method for array:remove_item(item) and rename
array:remove(index)->array:remove_at(index) to avoid confusion. Also
hook up array:has()
2024-08-15 02:39:35 -04:00
ed1667cb37 Add array:shuffled() and checks for array insertion 2024-08-15 02:17:53 -04:00
eccc4e4721 Add binary search method to arrays 2024-08-15 01:59:42 -04:00
e0223a4c20 Support ^ exponentiation for integers 2024-08-13 16:32:00 -04:00
d08f795794 Partially working first draft of bigints 2024-08-13 01:30:25 -04:00
ea80fefa05 Bugfix some issues with table keys/values 2024-08-12 17:57:14 -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
948d6b4c22 Add array:counts() 2024-08-10 16:36:50 -04:00
4265728cbb Add Array:unique() to get a set of unique items 2024-08-10 16:19:36 -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
ff4ea60daf Tweaks to array implementation, including changing how the bits are
allocated, making more explicit checks for refcounts and max values,
optimizations for certain methods, and adding compile-time errors for
arrays that hold items that are too large.
2024-08-04 14:22:58 -04:00
adccc56880 Switch around some of the logic for array:random() and array:shuffle()
to use Int$random() and return values
2024-08-04 13:03:55 -04:00
09204f4ce8 Revert "Fix array:random() to return a random item using correct RNG logic,"
This reverts commit 68b34cf00b.
2024-08-03 17:44:22 -04:00
8357d02992 Make default table removal behavior deterministic, but have caches
explicitly use random eviction.
2024-08-03 17:42:45 -04:00
68b34cf00b Fix array:random() to return a random item using correct RNG logic,
rather than a reference.
2024-08-03 17:33:18 -04:00
b2e752ee32 Replace heap_str with GC_strdup 2024-07-26 13:30:24 -04:00
cfe46ee393 Replace heap_strn() with GC_strndup() 2024-07-26 13:28:18 -04:00
fb95bbb1d4 Deprecate array:pairs() and switch iterator functions to use enums 2024-07-20 16:45:13 -04:00
907122a049 Fix for unqualified enum names as return values 2024-07-19 14:16:51 -04:00
9fec3a6adb Fix for reductions over iterators like (+) range(5, 10) 2024-07-13 19:58:21 -04:00
39576466a7 Add ReturnType(ret) so we can more accurately track return values for
`if` statements
2024-07-13 18:43:50 -04:00
2e2f68e582 Allow lambdas to have a return statement as the last statement 2024-07-13 18:26:41 -04:00
f64aaf5960 Add array:pairs() 2024-07-13 18:05:14 -04:00
445f79cb70 Add iterator functions 2024-07-13 17:17:58 -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