Calvin Rose
d0aa7ef590
Add a few asserts to quiet some of the -fanalyze calls in gcc 13.
2023-06-01 10:52:34 -05:00
Ico Doornekamp
50a19bd870
Fix warning in janet_gettime()
2023-05-22 20:53:03 +02:00
Ico Doornekamp
30c47d685d
Fixed :cputime because msdn does not implement clock() properly
2023-05-21 07:29:27 +02:00
Ico Doornekamp
e8e5f66f4c
Implement janet_gettime() for win32 and macos; need testing
2023-05-21 07:29:27 +02:00
Ico Doornekamp
aaf3d08bcd
Added 'source' argument to os/clock to select the clock source
2023-05-21 07:29:27 +02:00
Ico Doornekamp
61132d6c40
os/time and janet_gettime now use CLOCK_MONOTONIC instead of CLOCK_REALTIM, this matches the description from the documentation of os/clock. Fixes issue #1144
2023-05-21 07:29:27 +02:00
Ian Henry
9dc7e8ed3a
peg replacement functions have access to captures
...
When peg/replace or peg/replace-all are given a function to serve as the text
replacement, any captures produced by the PEG are passed as additional
arguments to that function.
2023-04-23 09:15:46 -07:00
Ian Henry
485099fd6e
string and peg replacement functions can now take functions
...
Functions will be invoked with the matched text, and their result will be
coerced to a string and used as the new replacement text.
This also allows passing non-function, non-byteviewable values, which will be
converted into strings during replacement (only once, and only if at least
one match is found).
2023-04-23 08:36:17 -07:00
Calvin Rose
3858b2e177
Add ev/all-tasks
to get running and pending root fibers.
2023-04-01 18:57:13 -05:00
Calvin Rose
9a76e77981
Update for undefined behavior sanitizer.
2023-03-24 18:49:21 -05:00
bakpakin
93b469885a
Initial Mingw support with Makefile.
...
Also add a macro JANET_MSVC to distinguish between
a windows build (JANET_WINDOWS) and a build with msvc.
2023-01-21 10:37:34 -06:00
Calvin Rose
d8d1de2dcb
Don't compile library loading code on windows if it is disabled.
2023-01-21 09:36:03 -06:00
Calvin Rose
75179de8da
Merge pull request #1056 from fd00/use-dev-urandom-on-cygwin
...
Use `/dev/urandom` for `janet_cryptorand` on cygwin
2023-01-08 09:29:52 -06:00
Calvin Rose
a0f40042cb
Update copyright year.
2023-01-07 15:03:35 -06:00
Daisuke Fujimura (fd0)
3254c2c477
Use /dev/urandom for janet_cryptorand on cygwin
2023-01-07 08:58:35 +09:00
Calvin Rose
914a4360e7
Indicate version bump since header file changed.
2022-11-05 16:38:52 -05:00
bakpakin
f8a9efa8e4
Allow binding pre-loaded symbols in windows FFI.
...
Mimic the posix RTLD_NOW setting for dlopen by iterating
opened DLLs to look for symbols.
2022-08-14 13:26:13 -05:00
Calvin Rose
e37be627e0
Allow loading current process on windows as well.
2022-06-18 10:31:00 -05:00
Calvin Rose
2e9f67f4e4
Change all "native-*" to ffi/. Move new dll loading funcs.
...
native-close, raw-native and native-lookup have become
ffi/close, ffi/native, and ffi/lookup instead.
The new ffi module will be useful for any architecture even if we don't
support making calls to certain functions. We can simple add a
do-nothing calling convetion that panics on call. ffi/read and ffi/write
are useful in their own right.
2022-06-12 10:02:02 -05:00
Calvin Rose
282d1ba22f
Implement sys v abi on x64 partially.
2022-06-06 18:54:17 -05:00
Calvin Rose
b3aed13567
Use janet_getnat when non-negative integer needed.
2022-05-05 18:27:29 -05:00
Jason Pepas
ab910d060b
Move AvailabilityMacros.h import into util.c
2022-03-21 21:23:09 -05:00
Jason Pepas
c9986936ed
Mac clock shim not needed until 10.12
2022-03-21 20:20:20 -05:00
Calvin Rose
3715d7a184
Auto update copyright date.
2022-03-21 18:22:59 -05:00
Jason Pepas
f270739f9f
Refactor __MACH__ to JANET_APPLE
2022-03-17 01:20:55 -05:00
Michael Camilleri
fad0ce3ced
Move missing symbol lookup to compiler
2022-01-24 11:08:33 +09:00
Michael Camilleri
d396180939
Avoid panicking when calling :missing-symbol lookup function
2022-01-23 17:29:52 +09:00
Michael Camilleri
1eb34989d4
Support looking up missing symbols during compilation
2022-01-21 13:07:11 +09:00
Calvin Rose
5b5a7e5a24
Make top level vars reuse ref cell when redefined at the top level.
...
This improves the repl experience while not messing with existing code
very much, if at all.
2022-01-08 11:27:08 -06:00
Calvin Rose
99cfbaa63b
Tweaks on redef feature branch.
2022-01-06 20:38:15 -06:00
Michael Camilleri
ea9d5ec793
Change metadata keyword back to :redef
2022-01-02 12:35:22 +09:00
Michael Camilleri
ec65f038a8
Support :dynamic-defs dynamic binding
2021-12-29 16:39:00 +09:00
Michael Camilleri
8347439644
Support redefinable bindings
2021-12-18 13:05:16 +09:00
Calvin Rose
f9891a5c04
More improvements to hashing for #889
2021-12-06 17:23:00 -06:00
Calvin Rose
545c09e202
Update hash mixing behavior - address #889
...
Try to have better behavior when mixing sub-hashes that are not uniform and
randomly distributed. Premultiply by a large prime before mixing to
"spread entropy" if it is concentrated in a certain subset of bits.
2021-12-05 16:34:26 -06:00
bakpakin
7734e77dfc
Readd the janet_register function.
2021-08-22 10:38:15 -05:00
Calvin Rose
bd71e1cd02
Silence clang warning about comparing function pointers.
...
The comparison is used to create a set of function pointers.
2021-08-21 12:10:19 -05:00
Calvin Rose
7f7ee75954
Patch util.c
2021-07-31 10:00:43 -05:00
Calvin Rose
7e5f226480
Put source mapping info in stack traces.
2021-07-29 21:29:08 -05:00
Calvin Rose
eb84200f28
Fix linux issues with epoll on normal files.
...
We use the selfpipe trick if epoll fails with EPERM when trying to
register a file descriptor.
2021-07-25 21:47:52 -05:00
bakpakin
7fba44ccce
Add macro mechanism for defining C source information for functions.
...
This wil let us track source code for C functions more easily.
2021-07-25 13:03:01 -05:00
Calvin Rose
1ef6db16ed
Add janet_vm_save and janet_vm_load.
...
This lets a user multiplex multiple Janet VMs on a single
thread or process if they are willing to implement context switching
themselves.
2021-07-16 20:59:03 -05:00
Calvin Rose
bbae43f259
Update copyright dates.
2021-05-31 13:46:02 -05:00
Calvin Rose
60214dc659
Update for windows compiler warning.
2021-05-30 16:42:58 -05:00
Calvin Rose
1f4f69a5b6
Fix windows syntax issue.
2021-05-29 20:40:26 -05:00
Calvin Rose
7ff204ec44
Work on system for adding compiler warnings.
...
This is the beginning of a system for compiler warnings. This includes
linting, deprecation notices, and other compiler warnings that are best
detected by the `compile` function and don't require the partial
evalutaion of the flychecker.
2021-05-28 15:12:05 -05:00
Andrew Chambers
f4c9064b79
Add config support for custom allocators.
2021-03-23 23:00:48 +13:00
Calvin Rose
e70f64e23d
Sort keys initial.
2021-03-13 19:17:07 -06:00
Calvin Rose
a2c837a99c
Merge remote-tracking branch 'felixr/master' into master
2020-12-26 20:06:34 -06:00
Felix Riedel
c76e0ae685
Use boost's way of combining hash values for arrays and kv pairs.
...
`seed ^= hash_value(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2);`
from https://www.boost.org/doc/libs/1_35_0/doc/html/boost/hash_combine_id241013.html
The current way of combining hashes peforms poorly on hash values of
numbers. Changing the way hashes are combined canlead to a significant speed up:
```
time janet_new -e '(def tbl @{}) (loop [x :in (range 1000) y :in (range 1000)] (put tbl {0 x 1 y} true))'
3.77s user 0.08s system 99% cpu 3.843 total
time janet_orig -e '(def tbl @{}) (loop [x :in (range 1000) y :in (range 1000)] (put tbl {0 x 1 y} true))'
48.98s user 0.15s system 99% cpu 49.136 total
```
2020-12-26 13:05:03 +00:00