Josef Pospíšil
bf6eae711a
Fix adding handler to loop with fiber
2020-11-10 10:32:47 +01:00
Calvin Rose
6f1d5d3b73
Add net/listen and net/accept-loop.
...
These are the elements that make up net/server, which has been moved
into pure Janet instead.
2020-11-09 11:18:09 -06:00
Calvin Rose
099a912992
Fix posix regression.
2020-11-08 19:48:44 -06:00
Calvin Rose
56b1ea3726
Include math.h to fix some bugs on 32 bit windows.
2020-11-08 19:06:35 -06:00
Calvin Rose
d6391f2d70
Get windows IOCP working for accept.
...
This also changes the api of servers slightly -
in light of having support for ev tasks, it is probably better
to remove the "simple" server code and replace it with some Janet
or remove it all together. While convenient, it has issues with error
handling and rigidity.
2020-11-08 18:56:13 -06:00
Calvin Rose
07910272e2
Get socket reads and writes working with IOCP.
2020-11-08 10:38:28 -06:00
Calvin Rose
1092013c2b
Merge branch 'master' into ev
2020-11-07 14:36:25 -06:00
Calvin Rose
f55316eabc
Merge pull request #494 from harryvederci/patch-1
...
Fix typo
2020-11-07 14:34:43 -06:00
Calvin Rose
840f59934e
Merge pull request #497 from ahungry/bugfix/Adjust-popen-doc
...
Fix function doc to match that of C POPEN
2020-11-07 14:34:11 -06:00
sogaiu
adfccd33ae
Tweak disasm doc
2020-11-05 13:56:42 +09:00
Matthew Carter
4dffd662f0
Fix function doc to match that of C POPEN
...
It may be misleading to some user to believe it is taking a path to a
file, when it is executing an arbitrary shell command for the first argument.
2020-11-03 20:52:02 -05:00
Calvin Rose
5064d579d4
Add net header instead of ifdef check.
2020-11-03 17:49:09 -06:00
Calvin Rose
540425a41b
Make docstring less confusing - Fix #493 .
2020-11-02 09:09:22 -06:00
Calvin Rose
4d21b582c7
Improve reading and writing from streams.
...
Handle errors earlier, and allow 0 length packets from UDP
but not from TCP. This should more closely follow the exact specs
of send and recv calls.
2020-11-02 09:06:31 -06:00
Calvin Rose
8942e348bd
Small change to windows ev.
2020-11-02 08:27:45 -06:00
Calvin Rose
9f27336827
Update windows ev code.
2020-11-02 08:19:53 -06:00
Calvin Rose
f517cccf7b
Fix unix domain sockets.
...
Also allow abstract unix domain sockets on Linux
(prefixed with '@' as is customary).
2020-11-02 08:16:28 -06:00
Harry Prins
3a937ace51
Fix typo
2020-10-29 08:45:04 +00:00
Yanis Zafirópulos
51828ab5f8
Copy editing :)
2020-10-26 14:46:31 +01:00
Calvin Rose
2891d2b260
Address #489
...
Add gc pressure when resizing fiber stack.
2020-10-18 18:41:18 -05:00
Calvin Rose
edfb861a5f
Disable epoll by default for evloop.
2020-10-11 15:05:27 -05:00
Calvin Rose
88c1cf3ee7
Reformat files.
2020-10-11 09:33:07 -05:00
Calvin Rose
813e3fdcfd
Merge branch 'windows-ev' into ev
2020-10-11 09:32:17 -05:00
Calvin Rose
cb4903fa86
Overhaul of poll loop, redo ev/select.
2020-10-11 09:14:14 -05:00
Calvin Rose
ea45165db8
Merge branch 'master' into ev
2020-10-10 09:04:05 -05:00
Calvin Rose
1fba699ed4
Merge branch 'master' of github.com:janet-lang/janet into master
2020-10-08 12:35:16 -05:00
Calvin Rose
ce3d574c41
Update docstring.
2020-10-08 12:34:08 -05:00
sogaiu
9ec66ab826
Use "module" instead of "namespace" in docstring
2020-10-07 18:18:28 +09:00
Calvin Rose
ebfa07f8ce
Registering an abstract type is idemptotent.
2020-10-06 19:11:29 -05:00
Calvin Rose
964a800d51
More work on windows event loop code.
2020-10-06 19:07:29 -05:00
Calvin Rose
2e944931b3
Update timestamp function to work on windows.
2020-10-04 15:18:31 -05:00
Calvin Rose
db67538311
Work on getting ev support on windows.
2020-10-04 12:46:15 -05:00
Calvin Rose
307c7e00e2
Merge branch 'master' into ev
2020-10-03 11:09:21 -05:00
Calvin Rose
45feb55483
Add integer parsing to pegs.
2020-09-27 12:19:00 -05:00
Calvin Rose
0a1d902f46
Fix #477
...
Make the walk function preserve bracket type, which should fix
threading macro behavior when threading into bracketed expressions.
2020-09-26 13:28:29 -05:00
Calvin Rose
959a577b5f
Merge branch 'master' into ev
2020-09-26 11:50:13 -05:00
Calvin Rose
d1f0a13ddc
janet_try macro and janet_restore function.
...
This allows catching panics without using pcall.
2020-09-19 18:47:47 -05:00
Calvin Rose
c455bdad11
Get ready for 1.12.2 release.
2020-09-19 16:54:56 -05:00
Calvin Rose
603791c0ba
Add more help text to doc macro and default repl.
2020-09-19 16:40:07 -05:00
Calvin Rose
cc0035b1d7
Add help text to repl line.
2020-09-19 16:35:32 -05:00
Calvin Rose
32bf70571a
Fix os/spawn piping on windows and free handles on errors.
2020-09-13 20:49:38 -05:00
Calvin Rose
95f4bd8e23
Merge branch 'master' into ev
2020-09-13 11:24:27 -05:00
Calvin Rose
2cbf4d8ad1
Update documentation for thread/send and thread/receive.
2020-09-13 08:38:37 -05:00
Calvin Rose
524c9b50d4
Add windows implementation for piping.
2020-09-12 19:56:48 -05:00
Calvin Rose
d3147b661b
Add :pipe to os/spawn for piping to subprocess.
...
Similar to Python's subprocess.PIPE, this creates and manages pipes
automatically for the caller.
2020-09-12 19:48:12 -05:00
Calvin Rose
d3182dce51
Merge branch 'master' into ev
2020-09-12 10:02:01 -05:00
Calvin Rose
8763df1cd0
Fix some typos.
2020-09-12 09:38:29 -05:00
Calvin Rose
2bf5e341d3
Update for 1.12.1
2020-09-07 16:10:33 -05:00
Calvin Rose
b53890ddae
Make some changes for WASM build.
2020-09-07 16:08:43 -05:00
Calvin Rose
93602ad9ea
Prepare 1.12.0 Release.
2020-09-07 15:28:46 -05:00
Calvin Rose
191d0001f4
Add header on BSDs.
2020-09-07 15:22:18 -05:00
Calvin Rose
1a04ce33f1
Conditionally include epoll headers.
2020-09-07 13:13:28 -05:00
Calvin Rose
babfe50550
Merge branch 'master' into ev
...
Also add poll implementation for ev.
2020-09-07 12:52:50 -05:00
Calvin Rose
ff57b3eb72
Make zero?, one?, neg? and pos? polymorphic.
2020-09-06 19:05:58 -05:00
Calvin Rose
24b8b0e382
Fix NaNboxing bug that cause flaky builds.
...
The macro janet_checktype(x, JANET_NUMBER) was incorrect when
x was NaN. This caused the initial unmarshalling dictionary to be missing
entries in certain cases.
2020-09-06 14:59:29 -05:00
Calvin Rose
321a758ab9
Change hash implementation for pointers.
2020-09-06 11:41:45 -05:00
Calvin Rose
e8734c77b4
Fix bug by casting to unsigned char.
...
Higher unciode codepoints where being read as negative char values.
We need to cast to unsigned char before comparing to 0x20 to check
for unprintable characters.
2020-09-06 10:47:05 -05:00
Calvin Rose
1eb00a9f74
Remove restriction on bytes being input to getline.
2020-09-06 10:36:38 -05:00
Calvin Rose
922a21d359
Run make format.
2020-09-05 21:26:21 -05:00
Calvin Rose
3c64596ea1
Add %t formatter to janet.
...
Was not present in printf and family.
2020-09-05 20:21:49 -05:00
Calvin Rose
2f89bdc672
Conditional compilation on some c99 syntax in header.
...
If the header is in a C++11 compilation unit, use C++11
aggregate initialization syntax instead.
2020-09-05 09:45:34 -05:00
Calvin Rose
25156eb83e
For #469 - Add support for C++ and mixed C/C++
...
WIP and for native modules. Required a few changes to headers and
some changes to JPM.
2020-09-04 17:41:36 -05:00
Calvin Rose
39032b45c9
Remove extra file.
2020-09-04 14:55:47 -05:00
Calvin Rose
821a8dca3b
Fix os/spawn - os/execute switch.
2020-09-04 14:54:58 -05:00
Calvin Rose
0145b133a1
Add os/spawn instead of os/execute with :a
2020-09-04 08:09:05 -05:00
Calvin Rose
b0b137d7f0
Apply formatting to windows changes.
2020-09-02 19:12:27 -05:00
Calvin Rose
b0c09153c2
Allow IO redirection on windows.
2020-09-02 19:07:45 -05:00
Calvin Rose
0485078c6c
Fix some issues on BSD and Windows.
2020-09-01 21:47:08 -05:00
Calvin Rose
7079cc43c9
Make some improvements and add os/proc-kill as well.
2020-09-01 21:36:49 -05:00
Calvin Rose
e7fca0051e
Add :a option to os/execute, and allow redirecting stdio.
...
This should help cover a number of common cases for
use of subprocesses. This should also eventually work well
with the ev branch via
2020-09-01 20:06:35 -05:00
Calvin Rose
6273e56886
Add janet_getjfile to C API.
2020-08-29 17:36:14 -05:00
Calvin Rose
8b9ad2dce8
Add :x flag to os/execute.
2020-08-29 10:27:32 -05:00
Calvin Rose
5313963baf
Don't run main when flychecking.
2020-08-29 09:05:18 -05:00
Calvin Rose
a31e079f93
Fix import macro to not coerce everything to string.
2020-08-27 08:19:41 -05:00
Calvin Rose
17d0b7a985
Improve import's handling of non constant args.
...
Be much more conservative about which arguments are cast to strings.
2020-08-27 07:40:51 -05:00
Calvin Rose
86e00e865e
Merge branch 'master' into ev
2020-08-23 11:25:04 -05:00
Calvin Rose
5dda83dc73
Add second argument to disasm.
2020-08-22 16:18:10 -05:00
Calvin Rose
28439d822a
Add cancel function.
...
This should allow better stack unwinding on a fiber that
no longer needs to complete.
2020-08-22 15:35:37 -05:00
Calvin Rose
b1d8ee19ca
Enable mutliline paste in shell.c with TCSADRAIN.
...
Replaces TCSAFLUSH.
2020-08-22 11:39:57 -05:00
Calvin Rose
f7c556ed8d
Add curenv to core.
2020-08-22 10:16:14 -05:00
Calvin Rose
5377e10532
Address #466 ?
...
Do not restore pc when returning from top most fiber frame.
Also add JANET_DEBUG config define for various debugging related
configurations. In fiber.c, when debug is enabled we reallocate the
entire stack everytime we push a frame to help uncover use after free
errors.
2020-08-17 07:01:58 -05:00
Calvin Rose
30522bbf7d
Merge branch 'master' into ev
2020-08-16 17:52:36 -05:00
Calvin Rose
58374623b7
Add a vm_commit before JOP_NEXT.
2020-08-13 22:28:50 -05:00
Calvin Rose
7e7498350f
Fix #463
...
Fix outdated code in macex1, such as checking for unquote-splicing,
which no longer exists. Also fix macex1 for quasiquoted tables and
structs. macex1 is not the macro expander used by the compiler, so
these bugs only affected code which called macex manually, such as
the short-fn macro.
2020-08-12 06:10:42 -05:00
Calvin Rose
06c268c274
Start working on throwing errors from async functions.
2020-08-11 08:33:24 -05:00
Calvin Rose
9b36e2b145
Be aggressive with setting SO_NOSIGPIPE on BSD/Apple.
2020-08-10 18:59:53 -05:00
Calvin Rose
ca75f8dc20
Address #463 - prevent sigpipe on client connections.
...
We erroneously did not set SO_NOSIGPIPE on connections aquired with
net/connect, only those quired thorugh net/server. This meant that
failed writes by a client could send sigpipe.
2020-08-10 18:45:44 -05:00
Calvin Rose
6f2f3fdb68
Return an error message if writes fail. Address #462 .
2020-08-10 11:06:31 -05:00
Calvin Rose
c903e49a4f
Change feature flags for BSD.
2020-08-10 10:42:56 -05:00
Calvin Rose
7b42ed66f2
Add xprint, xprin, xprintf, and xprinf.
2020-08-09 09:30:58 -05:00
Calvin Rose
fb26c9b2c4
Add ev/select and ev/rselect initial implementation.
...
Getting closer to a CSP implmententation. Probably
useful to move scheduling fields outside of fibers
and into an external table.
2020-08-09 00:20:27 -05:00
Calvin Rose
78ffb63429
Disallow mutlitple state machines waiting for a single fiber.
...
A 'select' operator will be channel based, not state machine based.
2020-08-08 07:51:46 -05:00
Calvin Rose
1213990b7d
Merge branch 'master' into ev
2020-08-07 19:51:37 -05:00
Calvin Rose
c3af30d520
Fix broken links in README.md
2020-08-07 19:48:06 -05:00
Andrew Chambers
38dc844e85
Add missing JANET_API to janet_cryptorand.
2020-08-07 14:02:26 +12:00
Calvin Rose
9afcec77f6
Disable PRF by default.
2020-08-03 21:52:57 -05:00
Calvin Rose
70ad98cc6f
Fix arc4random_buf implementation.
2020-08-03 21:49:49 -05:00
Calvin Rose
76cfbde933
Add JANET_HASHSEED environment variable.
2020-08-03 20:56:11 -05:00
Andrew Chambers
4d4ca7bb36
Initialize PRF with random data when it is enabled.
2020-08-04 12:13:36 +12:00
Calvin Rose
3563e7e1aa
Add -fPIC to default cflags when building boot image.
2020-08-03 17:32:41 -05:00
Calvin Rose
cb898fabf4
Set default channel size to 0.
2020-08-03 07:57:02 -05:00
Calvin Rose
5899671d96
Merge branch 'master' into ev
2020-08-03 07:54:53 -05:00
Calvin Rose
b564087db0
Add index-of to core library.
2020-08-02 13:47:56 -05:00
Calvin Rose
1748e8510e
Fix typo in docstring.
2020-08-02 13:27:49 -05:00
Calvin Rose
742c5bb639
Use a common queue implementation.
...
Queues occur in three places, so we use a single
implementation rather than three separate ones. This also
has the result that janet_vm_spawn will not overflow in the case
of channel-heavy, IO-light operation.
2020-08-01 14:20:58 -05:00
Calvin Rose
297de01d95
Add preliminary channel implementation.
2020-08-01 13:13:58 -05:00
Andre Alves Garzia
ba2beffcd8
Make sure JANET_NO_NANBOX is defined for ARM targets
2020-07-28 16:51:19 +01:00
Calvin Rose
2eb2dddb59
Begin work on channels.
2020-07-26 23:45:25 -05:00
nia
b731f6ab03
Fix build on NetBSD.
...
The NetBSD C library's headers do not expose extensions when
compiling with -std=c99 (as opposed to -std=gnu99 or no -std=
option), so define _NETBSD_SOURCE to get timegm, and functions
that would otherwise require an _XOPEN_SOURCE definition, e.g.
realpath.
Note that, as with FreeBSD, you need gmake to compile janet
on NetBSD, and can also install it from packages.
2020-07-27 00:21:15 +01:00
Calvin Rose
0403e306ed
Silence warnings from some compilers.
2020-07-26 08:48:22 -05:00
Calvin Rose
d393fbf360
Merge branch 'master' into ev
2020-07-25 14:07:47 -05:00
Calvin Rose
4cc680965c
Prepare for 1.11.1 release.
2020-07-25 13:48:43 -05:00
Calvin Rose
ba08e487cb
Disable PRF by default.
...
Since it is not any better by default without initializing the key, we
disable it by default. It can be turned on with JANET_PRF in
janetconf.h.
2020-07-25 13:34:40 -05:00
Calvin Rose
3960d0f6de
Merge branch 'master' into ev
2020-07-25 13:17:05 -05:00
Calvin Rose
409a8a3a43
Fix #452 - Bad file marshal
...
We forgot a call to janet_marshal_abstract, which corrupted the output.
2020-07-25 08:09:22 -05:00
Calvin Rose
02e5e49de2
Fix buffer overflow.
2020-07-24 07:04:32 -05:00
Calvin Rose
43438d3824
Allow getting typed arrays from byte sequences.
...
Fix native importing for .so files in current directory.
2020-07-24 07:01:34 -05:00
Calvin Rose
553b4d9428
Add timeouts to net functions.
...
Further debugging of the general timeout system, as well
as having a single fiber wait on multiple state machines (select).
2020-07-19 19:41:12 -05:00
Calvin Rose
df145f4bc9
Merge branch 'master' into ev
2020-07-19 17:20:43 -05:00
Calvin Rose
3ba2c7e7e8
Address #394 and #451 - Prepare for 1.11.0
...
Prefix MANPATH and PKG_CONFIG_PATH variables
with JANET_ to disassociate with standard env variables
that have a different format.
2020-07-18 13:09:53 -05:00
Calvin Rose
b4f5e5bc00
Update docs for -l option.
2020-07-06 21:25:41 -05:00
Calvin Rose
f580d2e41a
Add forever macro and add names to anon fns.
...
Adding names to anon functions that may error improves
stack traces, especially for user visible traces.
2020-07-06 19:26:37 -05:00
Calvin Rose
cd197e8be3
Add ev/call.
...
This is a common operation, and making fibers manually can be tedious.
2020-07-06 19:13:32 -05:00
Calvin Rose
51cf6465ff
Merge branch 'master' into ev
2020-07-06 17:22:38 -05:00
Calvin Rose
7478ad115f
Add any?
predicate to core.
...
This is the contrapositive to `every?`, and is analagous to `or` as
`every?` is to `and`.
2020-07-06 09:19:10 -05:00
Calvin Rose
9d8e338a11
Update default repl prompt to match errors.
2020-07-05 23:32:59 -05:00
Calvin Rose
ed4163cfde
Replace copyright on boot with system information.
2020-07-05 23:24:07 -05:00
Calvin Rose
bd95f742c0
Merge branch 'master' into ev
2020-07-05 23:14:49 -05:00
Calvin Rose
463e6d9316
Merge pull request #448 from GrayJack/fix-table-remove
...
Fix janet_table_remove returning the key instead of the value
2020-07-05 18:36:54 -05:00
Calvin Rose
a45509d28e
Add list-pkgs and list-installed to jpm.
2020-07-05 17:43:39 -05:00
Calvin Rose
9ba94d2c6b
More work on timeouts and racing listeners.
...
When two listeners are racing to resume the same fiber, the
first should cancel out the other.
2020-07-05 17:26:17 -05:00
Calvin Rose
a4de83b3a3
Merge branch 'master' into ev
2020-07-05 10:11:23 -05:00
Calvin Rose
68a12d1d17
Minor fixes for meson minimum build.
...
Also, fix regression that looses function name information.
2020-07-03 20:41:55 -05:00
Calvin Rose
c97d3cf359
Fix minimum meson build.
2020-07-03 20:30:09 -05:00
Calvin Rose
4721337c7c
issues with gettime on mach kernel.
2020-07-03 20:19:36 -05:00
Calvin Rose
2b36ed967c
Address some windows issues.
2020-07-03 20:13:49 -05:00
Calvin Rose
3bb8f1ac8d
Don't use CLOCK_MONOTONIC for pthread stuff.
...
Also fix marshalling functions without full
sourcemapping information, as well as thread/receive
ignoring bad messages. Instead, thread/receive will error
on bad messages.
2020-07-03 19:54:58 -05:00
Calvin Rose
617ec7f565
Threading improvements.
...
- Add thread/exit to kill the current thread.
- Add global lock aroung custom getline and add atexit handler
- to prevent any possible issues when exiting program.
- Allow sending stderr, stdout, and stdin over thread.
2020-07-03 16:28:07 -05:00
Calvin Rose
dc259b9f8e
Set fiber env for heavyweight threads.
...
Since you already incur the cost of creating the
core environment, this is probably what you want anyways.
This will make eval and other reflective code work as expected.
2020-07-03 15:20:19 -05:00
Calvin Rose
7b31a87b3c
Update integer limits and printing.
2020-07-03 14:14:59 -05:00
Calvin Rose
37a430c97c
Move declarations around.
2020-07-03 13:47:48 -05:00
Calvin Rose
f264cb0b18
Merge branch 'master' into ev
2020-07-03 12:26:01 -05:00
Calvin Rose
6ea530cc48
Address compilation warnings and errors.
2020-07-03 12:25:24 -05:00
Calvin Rose
a0abf307b4
Merge branch 'master' into ev
2020-07-03 12:14:48 -05:00
Calvin Rose
55cf9f5e1c
Don't break reverse backwards compat.
...
Breaking backwards compatibiliy here is not worth it.
Also update changelog.
2020-07-03 10:17:50 -05:00
Calvin Rose
b89f0fac7b
Move clock shims to util (Helps #430 ).
...
The thread module should also use these clock shims rather
than clock_gettime, which is not available on older mac systems.
2020-07-03 09:54:58 -05:00
GrayJack
8b3b3182bd
Add tests to check janet_table_remove behaviour
2020-07-02 11:03:08 -03:00
Calvin Rose
97c64f27ff
Remove duplicate code in loop macro.
...
Also evaluate for loop and range step exactly once.
Multiple evaluations can be inefficent and make infinite loop
detection impossible.
2020-07-01 22:37:04 -05:00
Calvin Rose
e548e1f6e0
Add peg/replace and peg/replace-all
2020-07-01 21:29:24 -05:00
GrayJack
7ea1c7d85a
Fix janet_table_remove returning the key instead of the value
2020-07-01 20:05:07 -03:00