Calvin Rose
bf2af1051f
Missing &&
2023-10-04 23:29:54 -05:00
Calvin Rose
b6e3020d4c
Attempt 2 to fix bsd compilation errors.
2023-10-04 23:27:56 -05:00
Calvin Rose
8f516a1e28
Address some bsd issues.
2023-10-04 23:24:40 -05:00
Calvin Rose
5f2e287efd
Make epoll event loop use EPOLLET and not reregister file descriptors.
...
This results in fewer system calls and presumably more effcient code. It
also brings the epoll (and kqueue) code more in line with how the
windows IOCP code works, incidentally.
2023-10-04 22:35:04 -05:00
Ian Henry
fa609a5079
fix some typos in docstrings
2023-10-03 19:17:18 -07:00
Calvin Rose
2ea90334a3
Remove some checking code for iocp events.
...
Be more permissive abouts events we get.
2023-10-02 23:25:26 -07:00
Calvin Rose
eea8aa555f
Revert dccb60b
to address #1299
...
This commit was to address issues with a use after free error in the
windows event loop, but the erroneous code was later reworked.
2023-10-03 00:14:25 -05:00
Calvin Rose
51a75e1872
Update janet_interpreter_interrupt to use new atomics
2023-10-01 10:52:05 -05:00
Calvin Rose
af7ed4322e
Get rid of req for 64 bit atomics
2023-10-01 10:27:51 -05:00
Calvin Rose
7cdd7cf6eb
Expose atomic refcounts to be easier to port.
...
This code was duplicate in a few places.
2023-10-01 10:09:23 -05:00
Calvin Rose
84ad161f1e
Add support for weak references in arrays.
...
Also change weak table syntax to not require keyword arguments.
2023-09-30 10:56:43 -05:00
Calvin Rose
6efb965dab
Merge branch 'weak-tables'
2023-09-29 07:38:21 -05:00
Calvin Rose
e05bc7eb54
Address compiler bug with break
.
...
Using result from `break` expression could trigger code that would
work, yet contain invalid, dead code preventing good marshalling.
2023-09-28 20:14:22 -05:00
Calvin Rose
b3a6e25ce0
Add weak references in the form of weak tables.
...
Any references exclusively held by a weak table may be collected
without the programmer needing to free references manually. A table
can be setup to have weak keys, weak values, or both.
2023-09-27 23:36:09 -05:00
Calvin Rose
d12464fc0e
Make poll work by going back to array of listeners for gc keeping.
2023-09-26 23:02:06 -05:00
Calvin Rose
a96971c8a7
More work on epoll implementation.
2023-09-26 12:05:06 -05:00
Calvin Rose
f6f769503a
Fix up ev.c to pass tests.
2023-09-26 11:11:29 -05:00
Calvin Rose
82917ac6e3
Kqueue fix.
2023-09-25 19:17:51 -07:00
Calvin Rose
a6ffafb1a2
Patches to kqueue implementation.
2023-09-25 19:07:18 -07:00
Calvin Rose
fb8c529f2e
Partial work updating epoll reimplentation.
2023-09-25 18:52:15 -07:00
Calvin Rose
1ee98e1e66
Get IOCP reworked event loop passing tests.
2023-09-25 15:19:39 -07:00
Calvin Rose
81f35f5dd1
Redo state management for Janet listeners.
...
Make more use of the built in GC code for abstracts to
be sure things are more correct. Issue before was streams could
be freed before IOCP events arrived.
2023-09-25 00:43:36 -07:00
Calvin Rose
1b402347cd
Work on debugging issue with server spawning.
2023-09-24 18:15:58 -07:00
Calvin Rose
dccb60ba35
Ignore IOCP where the event failed to deque.
2023-09-24 12:53:06 -07:00
Calvin Rose
471b6f9966
Add TOCLOSE back.
2023-09-24 12:28:35 -07:00
Calvin Rose
5dd18bac2c
More fixups to gc.c
2023-09-24 11:51:22 -07:00
Calvin Rose
018f4e0891
Remove some old code.
2023-09-24 10:30:58 -07:00
Calvin Rose
e85809a98a
Remove remains of gc instrumentation code.
2023-09-24 10:11:24 -07:00
Calvin Rose
e6e9bd8147
Redo async connect code to be moved out of ev.c.
...
Async connect is different than write.
2023-09-24 10:08:40 -07:00
Calvin Rose
e00a461c26
Add optional buffer-size to file/open.
...
This calls setvbuf to change FILE buffering. A goal is
to be able to use the existing file/* functions for blocking
IO analogous to `read` and `write` system calls.
2023-09-23 09:40:17 -05:00
Andriamanitra
ee142c4be0
truthy/falsey is more accurate than true/false
2023-09-22 03:04:41 +03:00
Andriamanitra
aeacc0b31b
add :unless modifier to (doc loop)
2023-09-21 19:23:40 +03:00
Calvin Rose
7b4c3bdbcc
Address issues from #1294 on non-nanboxed platforms.
...
Underlying bug was obscured by nanbox implementation.
2023-09-21 07:36:53 -07:00
Calvin Rose
910b9cf1fd
Distinguish between JANET_API and JANET_EXPORT
...
One is a way to export symbols, the other a way to reference
API functions. Also include prebuilt dlljanet.dll and dlljanet.lib
for windows to save people the trouble of compiling janet.c themselves.
2023-09-20 20:07:03 -07:00
Calvin Rose
b10aaceab0
Work on dllimport option for janet.
2023-09-20 17:34:42 -07:00
Calvin Rose
169bd812c9
Update state.h to #include <windows.h>
...
Should fix usage with msvc in some pipelines.
2023-09-18 23:51:15 -05:00
sogaiu
4f642c0843
Tweak janetconf.h
2023-09-19 10:34:50 +09:00
Calvin Rose
4e5889ed59
Prepare for 1.31.0 release.
2023-09-17 14:53:03 -05:00
Calvin Rose
a1b848ad76
Merge pull request #1288 from sogaiu/more-error-loc-info-in-dobytes
...
Report line and col more in janet_dobytes
2023-09-14 08:21:52 -07:00
primo-ppcg
db366558e7
add :unless
loop modifier
2023-09-13 15:21:46 +07:00
sogaiu
a23c03fbd0
Report line and col more in janet_dobytes
2023-09-13 15:41:14 +09:00
Josef Pospíšil
7f148522ab
Document array/push variadic argument
2023-09-12 09:34:21 +02:00
Calvin Rose
b95dfd4bdf
Update docstring.
2023-09-09 10:58:20 -05:00
primo-ppcg
a7536268e1
update partition
2023-09-08 12:38:58 +07:00
primo-ppcg
541469371a
update mean
2023-09-08 11:35:37 +07:00
Calvin Rose
97963d1396
Update printing for operating on pointers.
2023-09-05 17:01:31 -05:00
primo-ppcg
9cf674cdcb
update interleave
, interpose
2023-09-04 17:09:53 +07:00
Calvin Rose
efbc46c69e
Add support for using operators on arrays (and pointers to arrays).
...
Allows more expressive yet type checked representation of array
algorithms.
2023-09-03 12:32:28 -05:00
Calvin Rose
9b9f67c371
Merge branch 'master' into compile-opt
2023-09-03 10:18:54 -05:00
Calvin Rose
61791e4a4c
Update docstring.
2023-09-03 10:18:37 -05:00
primo-ppcg
4cb1f616c5
allow reverse
on non-lengthable
2023-09-01 16:04:21 +07:00
primo-ppcg
645109048b
update keys
, values
, pairs
2023-09-01 13:18:31 +07:00
primo-ppcg
f969fb69e1
add lengthable?
2023-09-01 13:04:53 +07:00
primo-ppcg
2f43cb843e
Allow one-term :range
and :down
forms
2023-08-29 10:59:16 +07:00
Calvin Rose
874fd2aba7
don't crash repl if someone sets a bad *pretty-format*
2023-08-27 13:09:22 -05:00
Calvin Rose
33d1371186
Update specials.c for formatting.
2023-08-25 16:28:41 -05:00
Calvin Rose
d2dd241e6b
Merge pull request #1269 from primo-ppcg/check-nil-form
...
Optimize nil conditions for while and if
2023-08-24 09:30:58 -05:00
Calvin Rose
4ecadfabf4
Fix atomics - warnings on windows
2023-08-24 08:00:50 -05:00
Calvin Rose
ffd79c6097
Allow multiple simultaneous interrupts cleanly for #1262
...
Instead of setting a flag, each interrupt increments an atomic
counter. When the interrupt is finally handled, either by scheduling
code to run on the event loop or executing some out of band code, the
user must now decrement the interrupt counter with
janet_interpreter_interrupt_handled. While this counter is non-zero, the
event loop will not enter the interpreter. This changes the API a bit but
makes it possible and easy to handle signals without race conditions
or scheduler hacks, as the runtime can ensure that high priority code is
run before re-entering possibly blocking interpreter code again.
Also included is a new function janet_schedule_soon, which prepends to
the task queue instead of appending, allowing interrupt handler to skip
ahead of all other scheduled fibers.
Lastly, also update meson default options to include the
interpreter_interrupt code and raise a runtime error if os/sigaction
is used with interpreter interrupt but that build option is not enabled.
2023-08-24 07:38:53 -05:00
primo-ppcg
35a8d2a519
Optimize nil conditions for while and if
2023-08-24 17:50:31 +07:00
Calvin Rose
21eab7e9cc
Update sigaction to help address #1262 .
...
Update example to have 4 cases - case 3 was previously broken but should
now work.
2023-08-23 09:16:59 -05:00
Calvin Rose
d9605c2856
Allow iterating over generators with pairs, keys, and values.
2023-08-22 19:25:05 -05:00
primo-ppcg
6e8979336d
speed up min
, max
2023-08-22 00:39:28 +07:00
Calvin Rose
b7f8224588
Address #1263
...
Fix reference counting when cleaning up unused abstract types
per-thread.
2023-08-20 14:53:25 -05:00
Calvin Rose
e5893d0692
Fix reference counting for threaded abstract types.
...
Was very borked. The sweep phase should drop references to unused
abstracts but wasn't, resulting in each collection decrementing the
count by one until 0 was hit, even if other threads maintained a
reference.
2023-08-20 14:50:46 -05:00
Calvin Rose
5f5e5cf693
Merge branch 'master' into compile-opt
2023-08-20 13:08:56 -05:00
Calvin Rose
ca4c1e4259
Try to use atomics inside signal handler for ref count.
2023-08-20 08:49:49 -05:00
Calvin Rose
91712add3d
Fix threaded abstracts in min build.
2023-08-19 20:19:05 -05:00
Calvin Rose
7198dcb416
Add sanboxing for signal handling.
2023-08-19 17:44:04 -05:00
Calvin Rose
08e20e912d
Use pthread_sigmask when adding signal handlers.
2023-08-19 17:30:55 -05:00
Calvin Rose
f45571033c
Add os/sigaction for signal handling.
...
Also improve interrupts to work better with busy loops
and signals.
2023-08-19 13:26:29 -05:00
Calvin Rose
2ac36a0572
Merge pull request #1257 from primo-ppcg/any-every
...
Update `any?`, `every?`
2023-08-18 07:20:44 -05:00
Calvin Rose
3df1d54847
Merge pull request #1258 from primo-ppcg/each
...
Update `each` keys before body
2023-08-18 07:16:19 -05:00
primo-ppcg
6222f35bc8
add buffer/from-bytes
2023-08-18 12:35:12 +07:00
primo-ppcg
2f178963c0
update each
keys before body
2023-08-18 10:32:24 +07:00
primo-ppcg
15760b0950
update any?
, every?
...
Updates `any?` and `every?` to be exact functional analogues to `or` and `and`.
2023-08-18 07:39:30 +07:00
Calvin Rose
43a6a70e1e
Merge pull request #1255 from primo-ppcg/sort
...
Special case common `sort` usages
2023-08-16 20:34:17 -05:00
Calvin Rose
cd36f1ef5f
Distinguish between threaded channels and non-threaded when marshalling.
...
Threaded channels _can_ be marshalled, just not for communication
between threads. This is a special case since the same abstract type
is used for both threaded and non-threaded channels.
2023-08-16 14:26:52 -05:00
Calvin Rose
46bda4e6fa
Stub out type inference pass.
2023-08-16 14:09:25 -05:00
primo-ppcg
cdd7083c86
special case common sort
usages
2023-08-15 11:58:22 +07:00
Calvin Rose
fdbf4f2666
Merge branch 'master' into compile-opt
2023-08-13 12:36:19 -05:00
Calvin Rose
8df7364319
Quick fix for discussion #1253
...
Protect against garbage collection during connect.
2023-08-13 12:00:54 -05:00
Calvin Rose
b939671b79
Add check for redefining types.
2023-08-13 11:09:20 -05:00
Calvin Rose
63023722d1
Merge pull request #1246 from wooosh/use-object-typedefs
...
Use typedefs for strings, symbols, keywords, tuples, structs, and abstracts.
2023-08-13 08:33:19 -05:00
Calvin Rose
4b8e7a416f
Have separate instructions for pointer arith
2023-08-12 17:36:06 -05:00
Calvin Rose
1e1e7a5cfd
Update garbage collection for sysir abstract type.
2023-08-12 13:47:23 -05:00
Calvin Rose
91e459e4a5
Format sysir.
2023-08-12 13:43:51 -05:00
Calvin Rose
b6adc257f4
Merge branch 'master' into compile-opt
2023-08-12 13:43:28 -05:00
Calvin Rose
a2bd98390e
More work on the sysir.
2023-08-12 13:42:52 -05:00
primo-ppcg
53e16944a1
rework reverse
, again
2023-08-13 00:54:17 +07:00
Calvin Rose
d9912f38f8
Add union types and change name of type constructor instructions.
2023-08-12 10:29:24 -05:00
primo-ppcg
9238b82cde
speed up compare
2023-08-11 23:48:29 +07:00
wooosh
701913fb19
Use typedefs for strings, symbols, keywords, tuples, structs, and abstracts.
2023-08-09 16:09:34 -04:00
Calvin Rose
8007806c8e
Add better support for arrays and struct fields in IR.
...
Also add option for named registers.
2023-08-08 18:56:02 -05:00
primo-ppcg
831f41a62b
move bytes?
, indexed?
, dictionary?
to corelib
2023-08-08 10:00:05 +07:00
Calvin Rose
de2440d458
Lots todo
2023-08-07 10:54:41 -05:00
Calvin Rose
43ab06467f
Merge branch 'master' into compile-opt
2023-08-07 09:40:27 -05:00
Calvin Rose
3fe4cfd14c
Add labels back to sysir
2023-08-07 09:39:35 -05:00
Calvin Rose
75be5fd4c6
Update sysir to have better field support.
2023-08-06 20:00:49 -05:00
Calvin Rose
7c7136fd70
Merge branch 'master' into compile-opt
2023-08-06 17:09:13 -05:00
Calvin Rose
cfa32d58a7
More work on sysir, add initial work for recursive types.
2023-08-06 15:50:21 -05:00
Calvin Rose
0ea1da80e7
Merge pull request #1242 from primo-ppcg/reverse
...
Rework `reverse`
2023-08-06 08:10:56 -05:00
primo-ppcg
c8c0e112bc
rework reverse
2023-08-06 16:16:41 +07:00
primo-ppcg
7417e82c51
rework keys
, values
, pairs
2023-08-06 15:39:16 +07:00
Calvin Rose
ecc4d80a5a
Prepare for 1.30.0 release.
2023-08-05 18:58:04 -05:00
primo-ppcg
8a70fb95b5
slight refactoring
2023-08-05 11:00:23 +07:00
primo-ppcg
61712bae9c
speed up range creation
2023-08-02 01:26:03 +07:00
sogaiu
f9233ef90b
Add fopen reference to file/open docstring
2023-07-23 18:39:20 +09:00
Calvin Rose
7cc176f0c0
Add source mapping to emitted C.
2023-07-16 16:08:28 -05:00
Calvin Rose
cd3573a4d2
Merge pull request #1224 from primo-ppcg/array-remove
2023-07-15 06:42:15 -05:00
Calvin Rose
738fe24e6d
Allow buffer/blit to take explicit nils for default args.
...
Also small changes for range checking code.
2023-07-14 20:04:10 -05:00
primo-ppcg
c2e55b5486
update docstrings for string/slice
and tuple/slice
2023-07-15 00:52:12 +07:00
Calvin Rose
989f0726e3
Make encoding of immediate values capture full range.
2023-07-14 10:06:20 -05:00
primo-ppcg
bdefd3ba1e
update final array index to be -1
2023-07-14 17:34:55 +07:00
Calvin Rose
4efcff33bd
Update inttypes.
2023-07-13 19:58:38 -05:00
Calvin Rose
8183cc5a8d
Disallow converting negative numbers to int/u64
...
The wrap-around rule doesn't make sense once subtraction is
properly fixed.
2023-07-09 22:25:20 -05:00
Calvin Rose
f3bda1536d
Remove some dead code in cfuns.c
2023-07-09 22:02:10 -05:00
Calvin Rose
b5d3c87253
Add new opcode subtract immediate.
2023-07-09 21:51:16 -05:00
sogaiu
348a5bc0a9
Add source view to .ppasm output
2023-07-06 13:26:03 +09:00
Calvin Rose
4d7baef89e
Merge branch 'master' into compile-opt
2023-07-04 13:52:54 -05:00
Calvin Rose
026c64fa01
Formatting.
2023-07-02 15:23:22 -05:00
Calvin Rose
9bc5bec9f1
More complete fix with some debugging tools.
2023-07-02 13:04:42 -05:00
Calvin Rose
a5f4e4d328
Test small fix for marshalling.
2023-07-02 12:58:55 -05:00
Calvin Rose
db0abfde72
Cache references when marshalling abstract types.
2023-07-01 18:02:56 -05:00
Calvin Rose
edf263bcb5
Make some fixes to marshalling.
2023-07-01 17:59:07 -05:00
Calvin Rose
60fba585e3
Remove extra MARK_SEEN
2023-07-01 17:37:12 -05:00
Calvin Rose
ebb6fe5be3
Patch fix for #1210
2023-07-01 10:34:11 -05:00
primo-ppcg
81423635ad
Add bnot to int types
2023-07-01 21:41:55 +07:00
Calvin Rose
58d297364a
Change code for marshalling abstract types.
2023-07-01 08:50:56 -05:00
Calvin Rose
db902c90c4
Merge pull request #1207 from primo-ppcg/divmod
...
floor div, variadic mod
2023-07-01 08:47:06 -05:00
primo-ppcg
8a62c742e6
define (mod x 0)
as x
...
See: Knuth, Donald E., _The Art of Computer Programming: Volume 1: Fundamental Algorithms_, pp. 15 ([link](https://books.google.com/books?id=x9AsAwAAQBAJ&pg=PA15 ))
2023-06-30 16:15:04 +07:00
Calvin Rose
b125cbeac9
Merge pull request #1203 from czkz/add-escapes
...
Add C escape sequences
2023-06-28 20:06:10 -05:00
Calvin Rose
3f7a2c2197
Try harder to avoid string copying with janet_getcbytes.
2023-06-28 08:30:09 -05:00
Calvin Rose
f6248369fe
Update janet_getcbytes to padd buffers with trailing 0.
2023-06-28 08:18:43 -05:00
primo-ppcg
c83f3ec097
floor div, variadic mod
2023-06-28 18:31:20 +07:00
Calvin Rose
0cd00da354
Add ffi/pointer-cfunction
to FFI.
...
This allows for more flexible C interop from DLLs. Users can skip the
usual extension loading mechanism and manage function pointers manually
if they need to.
2023-06-27 19:47:19 -05:00
bakpakin
4b7b285aa9
Remove MSVC compiler warning.
2023-06-25 17:29:09 -05:00
Dmitry
d63379e777
Add parser escape sequences
2023-06-25 19:29:39 +04:00
Calvin Rose
b219b146fa
Squashed commit of the following:
...
commit fbb0711ae1
Author: Calvin Rose <calsrose@gmail.com>
Date: Sat Jun 24 12:07:55 2023 -0500
Distinguish between subprocess when testing.
commit 676b233566
Author: Calvin Rose <calsrose@gmail.com>
Date: Sat Jun 24 11:59:17 2023 -0500
Hack for qemu based testing (also should work with valgrind)
commit d7431c7cdb
Author: Calvin Rose <calsrose@gmail.com>
Date: Sat Jun 24 11:54:04 2023 -0500
Revert "Test removing 32bit ptr marshalling."
This reverts commit 566b45ea44
.
commit 566b45ea44
Author: Calvin Rose <calsrose@gmail.com>
Date: Sat Jun 24 11:52:22 2023 -0500
Test removing 32bit ptr marshalling.
commit ff2f71d2bc
Author: Calvin Rose <calsrose@gmail.com>
Date: Sat Jun 24 11:42:10 2023 -0500
Conditionally compile marshal_ptr code.
commit bd420aeb0e
Author: Calvin Rose <calsrose@gmail.com>
Date: Sat Jun 24 11:38:34 2023 -0500
Add range checking to bit-shift code to prevent undefined behavior.
commit b738319f8d
Author: Calvin Rose <calsrose@gmail.com>
Date: Sat Jun 24 11:17:30 2023 -0500
Remove range check on 32 bit arch since it will always pass.
commit 7248626235
Author: Calvin Rose <calsrose@gmail.com>
Date: Sat Jun 24 10:56:45 2023 -0500
Quiet some build warnings.
commit 141c1de946
Author: Calvin Rose <calsrose@gmail.com>
Date: Sat Jun 24 10:50:13 2023 -0500
Add marshal utilities for pointers.
commit c2d77d6720
Merge: 677b8a6f
ff90b81e
Author: Calvin Rose <calsrose@gmail.com>
Date: Sat Jun 24 10:40:35 2023 -0500
Merge branch 'master' into armtest
commit 677b8a6f32
Author: Ico Doornekamp <ico@zevv.nl>
Date: Mon Jun 12 21:01:26 2023 +0200
Added ARM32 test
2023-06-24 12:13:51 -05:00
Calvin Rose
ff90b81ec3
Add some utilitites for dealing with unsigned integers in janet.h
2023-06-24 10:38:35 -05:00
Michael Camilleri
f977ace7f8
Avoid prematurely closing file descriptors when redirecting IO
2023-06-23 15:50:19 +09:00
sogaiu
78eed9b11c
Use vm_commit
2023-06-22 21:36:57 +09:00
Calvin Rose
3a4d56afca
Patch release.
2023-06-19 07:18:35 -05:00
Calvin Rose
63bb93fc07
Fix isatty code to not use functions only defined if ev is enabled.
2023-06-19 07:14:56 -05:00
Calvin Rose
5a39a04a79
Prepare for 1.29.0 release.
2023-06-19 06:48:33 -05:00
Calvin Rose
2fde34b519
Remove extra function call that cannot ever trigger.
2023-06-18 09:41:53 -05:00
Calvin Rose
1ef5c038db
Merge pull request #1187 from CosmicToast/peg-boolean
...
peg: add support for "true" and "false" primitives to always/never match
2023-06-18 09:40:46 -05:00
Calvin Rose
e2459cfb47
Merge pull request #1185 from chris-chambers/macro-lints-fix
...
Fix order in which *macro-lints* is set during expansion
2023-06-18 09:39:25 -05:00
primo-ppcg
2a7ea27bb7
do not expand false branch more than once
...
Fixes #1191
2023-06-11 19:15:48 +07:00
primo-ppcg
32c5b816ae
use unquotes instead
2023-06-11 18:38:20 +07:00
Chloe Kudryavtsev
e54ea7a1d8
fixup! peg: add support for "true" and "false" primitives to always/never match
2023-06-11 12:38:40 +02:00
primo-ppcg
1077efd03a
update if-let
...
Fixes #1189
2023-06-11 17:19:29 +07:00
Chloe Kudryavtsev
f9ab91511d
peg: add support for "true" and "false" primitives to always/never match
...
The use cases involve user-expandable grammars.
For example, consider the IRC nickname specification.
> They SHOULD NOT contain any dot character ('.', 0x2E).
> Servers MAY have additional implementation-specific nickname restrictions.
To implement this, we can do something along these lines:
```janet
(def nickname @{:main '(some :allowed)
:allowed (! (+ :forbidden/dot :forbidden/user))
# for lax mode, (put nickname :forbidden/dot false)
:forbidden/dot "."
# to add your own requirements
# (put nickname :forbidden/user 'something)
:forbidden/user false})
```
Additionally, it's common in parsing theory to allow matches of the
empty string (epsilon). `true` essentially allows for this.
Note that this does not strictly add new functionality, you could
emulate this previously using `0` and `(! 0)` respectively, but this
should be faster and more intuitive.
The speed improvement primarily comes from `(! 0)` which is now a single
step.
2023-06-11 10:44:39 +02:00
primo-ppcg
2c3ca2984e
simplify if-let logic
2023-06-11 12:09:58 +07:00
Christopher Chambers
52d3470cbe
Fix order in which *macro-lints* is set during expansion
...
Previously, `*macro-lints*` was set after the `macroexpand1` fiber was
resumed, rather than just before. And, `*macro-lints*` was never
cleared. This behavior was typically fine since the main users of
`compile` pass the same lint array repeatedly, and the first macro
expansion (somewhere in boot.janet) never produces a lint. But, when
compiling with a fresh lint array, if the first macro invocation
produced a lint, the lint was always lost.
2023-06-09 12:53:10 -04:00
Calvin Rose
e35c6b876f
Merge pull request #1183 from primo-ppcg/take-drop
...
Make take and drop more symmetric
2023-06-08 14:52:51 -05:00
Calvin Rose
9a2897e741
Run through astyle with manual corrections
2023-06-08 13:01:49 -05:00
primo-ppcg
70b2e8179d
nitpick performance tweak
2023-06-08 23:57:07 +07:00
primo-ppcg
5317edc65d
minor readability change
...
As suggested by @sogaiu
@zevv forget to push this change in a recent PR (https://github.com/janet-lang/janet/pull/1175#issuecomment-1576128152 ).
Incidentally, the affected lines were already reformatted in the current PR, via fmt/format-file.
2023-06-08 23:00:05 +07:00
Calvin Rose
866d83579e
Address #1165 - Allow for partial ffi support without totally removing testing.
...
Query at runtime which calling conventions are supported, including
a placeholder :none.
2023-06-08 09:07:16 -05:00
primo-ppcg
a238391b36
take-drop performance tweaks
...
Increase efficiency for `take` and `drop` with slices.
Check indexed types before bytes types.
2023-06-08 14:50:37 +07:00
Christopher Chambers
57c954783d
Fix resumption values when closing a channel.
...
When suspended in `ev/give` or `ev/take`, closing the channel should
cause the result of `ev/give` or `ev/take` to be `nil`.
When suspended in `ev/select`, closing the channel should cause the
result of `ev/select` to be `[:close ch]`.
The results were flipped before.
2023-06-07 15:01:56 -04:00
primo-ppcg
b5407ac708
take-drop dictionaries
...
Return table for `take` of dictionary types.
Allow `drop` of dictionary types.
2023-06-07 19:20:05 +07:00
primo-ppcg
472ec730b5
take-drop symmetry
...
Allow `take` from the end of bytes or indexed (as `drop` does).
Allow `drop` from fibers (as `take` does).
2023-06-07 18:12:36 +07:00
Calvin Rose
528a516390
Add more sandbox capabilities.
...
Add more granularity to ffi sandbox capabilities - distinguish between
using FFI functions, creating FFI functions, and creating executable
memory.
2023-06-04 18:48:34 -05:00
Calvin Rose
649173f661
Merge pull request #1175 from zevv/quicky
...
Added JANET_NO_AMALG flag to Makefile
2023-06-04 14:24:35 -05:00
Calvin Rose
1efb0adb35
Add 3 argument form to fiber/new
...
Allow passing in environment table at fiber creation since
it is a fairly common thing to do.
2023-06-04 14:17:18 -05:00
Calvin Rose
88a8e2c1df
Define *task-id* since it is part of the event-loop runtime.
2023-06-04 14:05:37 -05:00
Ico Doornekamp
bb4ff05d35
Added NO_AMALG flag to Makefile to build janet from the individual
...
source files instead of from the amalgamated janet.c; this considerably
speeds up parallel builds on modern CPUs
2023-06-04 20:02:47 +02:00
Calvin Rose
dd3b601c87
Don't do fiber double arity check.
2023-06-04 12:56:03 -05:00
Calvin Rose
4b3c813f5a
Revert to old behavior of janet_fiber returning NULL.
...
When there is a bad arity function passed in to the fiber
constructor, return NULL so the runtime can choose what to do.
This is not the prettiest API but does work, and gives better error
messages for instance in the compiler.
2023-06-04 11:21:52 -05:00
Calvin Rose
67f375bea2
Small code style change to boot.janet
2023-06-04 11:10:39 -05:00
Christopher Chambers
53447e9d0b
Ensure ev/gather fibers are fully canceled on error.
2023-06-04 10:49:30 -04:00
Calvin Rose
c4c86f8671
Run boot.janet through janet-format.
2023-06-03 16:47:59 -05:00
Calvin Rose
658941d26d
Fix macro declaration.
2023-06-03 14:24:41 -05:00
Calvin Rose
e4bf27b01c
Macro hack for meson-min build.
2023-06-03 14:22:16 -05:00
Ico Doornekamp
e0ea844d50
added os/isatty, do not enable colors if stdout is not a tty
2023-06-02 16:59:54 +02:00
Calvin Rose
e97299fc65
Fix #1174 - bad debug info causing stack traversal to segfault.
...
Coming from commit 77189b6e66
, relating
to changes in source mapping debug info, this caused a segfault when
traversing a stack frame where the birth_pc was incredibly large due
to wrap around. This fix prevents the wrap around and does saturating
subtraction to 0.
2023-06-01 13:01:59 -05:00
Calvin Rose
26a113927e
Add handling for new bytecode optimizations.
2023-06-01 12:47:59 -05:00
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
Calvin Rose
5de889419f
Rename contains? and contains-key? to has-value? and has-key?
...
Shorten docstrings to be less like a tutorial. They get put into RAM
and memory ain't free.
2023-05-31 22:35:57 -05:00
Calvin Rose
0fcbda2da7
Merge pull request #1017 from Techcable/feature/helper-func-contains
...
Add `contains?` helper function to boot.janet
2023-05-31 22:28:41 -05:00
Calvin Rose
644ac8caf8
Add compiler optimizations for #1163 - eachp
...
Should result in much better bytecode in the simple case.
2023-05-31 12:26:27 -05:00
Calvin Rose
77189b6e66
Fix some symbol mapping inside nested functions.
2023-05-31 08:19:24 -05:00
Calvin Rose
4f8f7f66ee
Merge branch 'bytecode_opt'
2023-05-31 07:57:13 -05:00
Calvin Rose
b099bd97f2
Merge branch 'master' into bytecode_opt
2023-05-30 18:13:02 -05:00
Calvin Rose
961c6ea15a
Merge pull request #1172 from zevv/windows-recvfrom
...
fix for crash on windows in src/core/ev.c: initialze state->fromlen
2023-05-30 16:54:24 -05:00
Ico Doornekamp
ad7bf80611
fix for crash on windows in src/core/ev.c: initialze state->fromlen
...
before doing WSARecvFrom() to prevent crash (likely caused by the
memcpy() of `state->from` at line
2301 with the memcpy length set to -1)
2023-05-30 19:33:34 +02:00
Ico Doornekamp
40080b23ae
Fixed net/connect binding address
2023-05-30 16:57:17 +02:00
Calvin Rose
7acb5c63e0
Remove bad windows10 check.
2023-05-29 18:17:22 -05:00
Calvin Rose
fcca9bbab3
Add recursion to the pruning optimization.
2023-05-29 18:05:14 -05:00
Calvin Rose
dbb2187425
Merge pull request #1167 from zevv/janet-formatbf-fix
...
Fix janet_formatbv() type when handling %d %u int specifiers
2023-05-29 18:03:13 -05:00
Calvin Rose
4782a76bca
Add inital bytecode optimizations for #1163
...
This removes unnecessary movn, movf, lds, and a few other instructions.
Any instructions that has not side effects and writes to a slot that
isn't used can be removed. A number of other optimizations can follow
from this:
- Implement the def-aliasing-var optimization better
- This function can be iterated as a fix point until no more
instructions are removed.
- If we implement slot renaming, then we no longer need to free slots
and can simplify the initial code generation a lot.
2023-05-29 16:10:48 -05:00
Ico Doornekamp
d13788a4ed
Updated documentation for buffer/push-at
2023-05-29 22:03:37 +02:00
Ico Doornekamp
e64a0175b1
change janet_formatbv() to handle int/unsigned int instead of long/unsigned long on '%d' and '%u' format specifiers.
2023-05-29 19:50:14 +02:00
Calvin Rose
70f13f1b62
Merge pull request #1157 from zevv/file-lines
...
Add file/lines iterator
2023-05-26 18:16:14 -05:00
Ico Doornekamp
09345ec786
file/linex now only acceps a file, not a path name
2023-05-26 17:50:26 +02:00
primo-ppcg
3602f5aa5d
Update boot.janet
...
`kvs` is not yet defined at this point.
2023-05-25 18:27:31 +07:00
primo-ppcg
672b705faf
Allow mapcat et al to accept multiple iterable arguments
...
#1159
2023-05-25 18:12:38 +07:00
Ico Doornekamp
64e3cdeb2b
Add file/lines iterator
2023-05-24 16:54:04 +02:00