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
Justin Ethier
1f8a824bda
More efficient record type construction
2019-02-27 15:44:50 -05:00
Justin Ethier
8772c5355b
Faster initialization of objects create via define-record-type
2019-02-27 14:31:14 -05:00
Justin Ethier
0f0beb024c
Do not use vector-set when creating record types
...
This improves performance as mutations force the GC to do more work.
2019-02-27 10:29:18 -05:00
Justin Ethier
6bfff4b6ed
Perform fixnum type check
2019-02-19 13:17:33 -05:00
Justin Ethier
2d9ba5a9e3
New version of (list?)
2018-12-12 13:43:47 -05:00
Justin Ethier
74e56aeb2f
Issue #280 - Cyc-add-feature!
2018-11-10 06:39:13 -05:00
Justin Ethier
d9b0adc8c1
Issue #277
2018-10-01 17:05:52 -04:00
Justin Ethier
4cf407ebe6
Issue #275 - Return #f instead of raising error
2018-09-05 17:41:47 -04:00
Justin Ethier
75b50d8269
Slightly faster (exact-integer?)
2018-06-21 17:55:27 -04:00
Justin Ethier
48845ce23b
Experimenting with faster versions of map, for-each
2018-06-20 13:35:39 -04:00
Justin Ethier
75e48f999f
Issue #55 - Support (inexact) for complex
2018-05-15 13:15:53 -04:00
Justin Ethier
335be69a12
Make (complex? z) work
2018-05-10 13:39:30 -04:00
Justin Ethier
1d91ace450
Fix slot-ref
2018-02-01 13:25:19 -05:00
Justin Ethier
aafe5f0d68
Record type enhancements
2018-01-31 19:08:47 -05:00
Justin Ethier
cf4877acd7
Bug fixes
2017-12-18 23:56:07 +00:00
Justin Ethier
44af2e8d98
Issue #236 - Added single-byte I/O functions
2017-12-18 23:39:15 +00:00
Justin Ethier
584b31460b
Added TODO
2017-12-18 17:34:18 -05:00
Justin Ethier
24b10e9d6a
Added full-unicode feature
2017-12-18 14:49:07 -05:00
Justin Ethier
8750696e17
cleanup
2017-11-19 18:43:37 -05:00
Justin Ethier
a492ca379d
Handle the null character
2017-11-09 19:00:21 -05:00
Justin Ethier
02014322b7
Properly count bytes in make-string
2017-11-07 17:47:08 -05:00
Justin Ethier
6aaa600ebc
Bugfixes:
...
- Avoid unnecessary calls to `strlen`
- Type check the `fill` parameter to `make-string`
2017-10-27 13:01:04 +00:00
Justin Ethier
77e391cabc
Uncomment fast path
2017-10-26 22:35:11 +00:00
Justin Ethier
703f863e48
Fixes for make-string
2017-10-26 21:56:35 +00:00
Justin Ethier
0bd0eeb7a6
WIP
2017-10-26 17:04:52 +00:00
Justin Ethier
722d077367
WIP
2017-10-24 19:01:20 -04:00
Justin Ethier
6c4dd4b740
Compute number of code points and byte len
2017-10-24 17:53:09 -04:00
Justin Ethier
c339234632
Issue #225 - Added error-object interfaces
...
This is only a rough-cut of the actual implementation, though.
2017-09-15 12:14:26 +00:00
Vasilij Schneidermann
d731f92e7d
read-string: return EOF if nothing can be read
...
R7RS states that there's three possible scenarios for read-string:
- More characters can be read than asked for (return string)
- Less characters can be read than asked for (return string)
- No characters can be read (return EOF)
This commit ensures the last scenario works as intended.
2017-09-07 17:07:05 +02:00
Justin Ethier
db011aa1af
Issue #220 - make-string - use heap for large strs
2017-09-05 17:32:04 -04:00
Justin Ethier
2647ceb4ae
WIP
2017-09-05 13:44:16 +00:00
Justin Ethier
8f2a918283
Issue #217 - Optional port arg for peek-char
2017-09-04 18:38:15 -04:00
Justin Ethier
12c91b86a5
Issue #217
2017-09-02 18:49:41 -04:00
Justin Ethier
aac5240a0b
Avoid calling length each iteration of for-each
...
length is O(n) so calling it should be avoided, especially for each iteration of for-each. Instead the code can just check if the first cdr is null. This has the potential for a huge speed improvement.
2017-06-02 19:25:26 -04:00
Justin Ethier
48ee3708d5
Inline more define-c functions
2017-05-09 12:44:42 +00:00
Justin Ethier
1391186a6f
Inline (exact?) and (exact-integer?)
2017-05-04 08:40:59 +00:00
Justin Ethier
75b9e7bf8a
Explicit inlines
2017-04-29 01:18:39 +00:00
Justin Ethier
19e0346968
Temporary workaround for name conflict
...
A longer-term solution will need to address cases where a function is defined with the same name as an inlinable function from another library. These are effectively promoted to primitives, which are not renamed by alpha conversion.
A possible workaround might be to allow a global in the module being compiled to "override" a primitive of the same name. TBD
2017-04-27 18:11:57 -04:00
Justin Ethier
8cb74fb075
Inline version of truncate
2017-04-17 10:27:23 +00:00
Justin Ethier
498fa6f54e
Issue #194 - Disable inline define-c's for now
2017-04-12 18:01:33 -04:00
Justin Ethier
861330bc82
WIP
2017-04-05 19:00:42 -04:00
Justin Ethier
4b8d143627
Cleanup
2017-04-05 18:08:08 -04:00
Justin Ethier
e5d63a61d5
WIP
2017-04-04 09:11:07 +00:00