Commit graph

214 commits

Author SHA1 Message Date
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
Justin Ethier
3b4139ac78 Issue #183 - Support system-level (cyclone) libs 2017-03-19 21:30:30 +00:00
Justin Ethier
3d55a37e27 Cleanup 2017-03-16 21:26:28 +00:00
Justin Ethier
bb6d822d92 Do not export internal get function 2017-03-16 15:58:17 +00:00
Justin Ethier
d86b91af36 Remove debug code 2017-03-16 14:11:46 +00:00
Justin Ethier
d8a11c2ea6 Clean up the code for (set-param-obj!) 2017-03-16 14:10:51 +00:00
Justin Ethier
06dcb18ba2 WIP 2017-03-15 17:28:54 +00:00