Commit graph

263 commits

Author SHA1 Message Date
Justin Ethier
b218aacf65 Clean up cruft 2020-12-22 17:03:37 -05:00
Justin Ethier
a5fb3b1b14 Allow (vector?) to recognize and disregard record types 2020-12-21 23:00:43 -05:00
Justin Ethier
cc3c8f5bac WIP refactoring record marker
Idea here is to use a new record marker that is guaranteed to be unique and that will be faster to compare against in the C runtime.
2020-12-21 21:50:07 -05:00
Justin Ethier
2c5d9eeb8d Added record-marker2 2020-12-20 22:46:27 -05:00
Sean Lynch
623f59a84d Fix a crash in record predicates
Ensures that the argument to a record predicate has enough items to be a
record before checking for the record-marker and type name.
2020-12-19 12:19:25 -08:00
Justin Ethier
e257b009c4 Merge branch 'master' of github.com:justinethier/cyclone 2020-08-18 22:14:24 -04:00
Justin Ethier
746d308a75 Fix regression in is-a? 2020-08-18 22:14:09 -04:00
Justin Ethier
36b9489507 Cleanup error message on invalid type 2020-08-17 18:15:44 -04:00
Justin Ethier
ed167c71c1 Issue #402 - Type check record type getter/setter 2020-08-17 18:01:43 -04:00
Justin Ethier
b350a0cf33 Prevent overwritting evn's when importing from repl 2020-07-27 17:53:31 -04:00
Justin Ethier
7b079d36d3 Pretty-up the top-level error messages
Make the output more readable when we have location information for the error.
2020-07-23 12:38:01 -04:00
Justin Ethier
e6d654b4a4 Prevent line number info from being added twice
Since we now call error/loc in the macro expander, it is possible we are double-calling it if a macro is also calling it directly to report a syntax error. We need to detect that case and only add location information (line, column, filename) if it has not already been added to the error message.
2020-07-23 12:23:42 -04:00
Justin Ethier
1670670968 WIP, universal macro exception handler 2020-07-23 12:10:24 -04:00
Justin Ethier
c37e8dfad9 Allow passing more args to error/loc 2020-07-22 22:54:07 -04:00
Justin Ethier
6d30e7449b Include source location in error messages 2020-07-21 23:05:32 -04:00
Justin Ethier
0d25e5e122 Clean up error messages, provide filename if able 2020-07-21 22:35:47 -04:00
Justin Ethier
de1a97fbe7 Cleanup 2020-07-21 21:45:26 -04:00
Justin Ethier
f5cf3b57ee Issue #353 - Report location info with syntax errors 2020-07-20 18:49:48 -04:00
Justin Ethier
1ff14cf605 Issue #353 - Clean up error reporting 2020-07-20 18:35:57 -04:00
Justin Ethier
f3c9874e29 WIP 2020-07-20 14:52:46 -04:00
Justin Ethier
858cac4eee Relocating source list to (scheme base) 2020-07-19 22:58:01 -04:00
Justin Ethier
346a6e4bd5 Issue #369 - Switch over to multi-arg string cmp 2020-06-04 22:48:17 -04:00
Justin Ethier
5bb83cbfc6 Added stub 2020-06-03 19:08:23 -04:00
Justin Ethier
6ace99f5bb Issue #369 - Switch out inline string cmp ops 2020-06-03 18:52:59 -04:00
Justin Ethier
972b896e2b Add placeholder 2020-05-25 18:57:55 -04:00
Justin Ethier
d7abe4f8f5 Issue #380 - Support optional args to write-string 2020-05-25 18:20:39 -04:00
Justin Ethier
ac330dfffc Issue #378 - Return void instaed of null 2020-05-19 23:12:21 -04:00
Justin Ethier
cf6ccc25d9 Issue #377 2020-05-18 18:18:33 -04:00
Justin Ethier
380641ddda Issue #367 - Allow list-copy to return non-lists 2020-05-13 15:33:39 -04:00
Justin Ethier
f91d5b1a30 Correctly differentiate binary/textual ports 2020-04-02 18:53:10 -04:00
Justin Ethier
b5a9bd24e1 Prevent read-bytevector from corrupting data
Previously it was possible for an extra by to be introduced between multiple reads
2020-03-06 12:33:05 -05:00
Justin Ethier
9a464e002e Bugfix - Allow read-bytevector to return EOF 2020-03-05 23:00:20 -05:00
Justin Ethier
098b30133f Added TODO 2020-01-02 13:41:19 -05:00
Justin Ethier
40894ecb3e Added define-values 2020-01-02 13:41:04 -05:00
Justin Ethier
837954b310 Use read-bytevector! from Chibi 2019-12-29 18:10:05 -05:00
Justin Ethier
48ce2709b9 Placeholders for bin/txt port prims 2019-12-29 17:58:30 -05:00
Justin Ethier
123c20d60d WIP: (read-bytevector!) 2019-12-28 19:37:15 -05:00
Justin Ethier
e5dca1835f Added read-bytevector 2019-12-28 18:55:19 -05:00
Justin Ethier
02fcad76f6 Added write-bytevector 2019-12-28 18:22:35 -05:00
Justin Ethier
734d40a44d Faster constructor for record types
TODO: validate number of args passed to record type constructor
2019-11-06 13:30:36 -05:00
Justin Ethier
838240fceb Avoid computing (length args) twice 2019-11-06 12:07:42 -05:00
Justin Ethier
c9921ce69a Fix libtommath warnings 2019-10-23 13:24:13 -04:00
Justin Ethier
e211e3f64d Issue #339 - Fix fast path in make-string
We need to ensure the code point buffer only contains a single byte in order to use the fast path for string creation. For example if there is one code point that is 2 bytes large we need to use the slow path.
2019-09-23 13:28:52 -04:00
Justin Ethier
f3c83e42a4 Optimized versions of (map) and (for-each)
These versions are optimized for when the function is being called with two list arguments.
2019-08-09 16:00:46 -04:00
Justin Ethier
ec25eddc28 Issue #331 - Prevent syntax error during eval
Prevent an unquoted symbol from throwing a syntax error when evaluating a define-record-type form. Note there are still other issues with creating a record type in the interpreter at this time.
2019-08-05 14:09:14 -04:00
Justin Ethier
0c050a3065 Added platform to (features) 2019-07-31 13:06:31 -04:00
Justin Ethier
f0b84ce122 Set immutable flag 2019-05-01 17:41:47 -04:00
Justin Ethier
12d6cbce5a Use explicit if's instead of memv for case
Theory is the generated code can make better use of the processor cached when using explicit if statements than aggregating over a list via memv, since pairs in the list can be located anywhere across memory.
2019-03-20 17:39:55 -04:00
Justin Ethier
1f7212a964 Faster version of _list-index 2019-03-14 15:43:36 -04:00
Justin Ethier
d9f63a85b4 Revert previous change 2019-02-27 16:03:19 -05:00