Calvin Rose
3f3b756b61
Merge pull request #298 from leahneukirchen/m-del
...
Make alt-backspace behave like ctrl-w.
2020-03-07 10:14:14 -06:00
Calvin Rose
d3b9b8d452
For #293 , correct wildcards in dictinoaries.
2020-03-07 10:13:10 -06:00
Calvin Rose
c864828735
Address #293 - wildcard to match macro.
...
The _ symbol will match any value without creating a binding.
2020-03-07 09:40:02 -06:00
Calvin Rose
e0c9910d85
Add :range-to and :down-to to loop.
...
Fully inclusive ranges are generally useful and
do not complicate implementation much.
2020-03-07 09:34:11 -06:00
Calvin Rose
e351dde651
Update CHANGELOG.md and docs for loop and pp.
2020-03-06 17:12:06 -06:00
Calvin Rose
714bd61d56
Address #300
...
Check for empty capture stack in replace rule.
2020-03-06 10:05:20 -06:00
Calvin Rose
6123c41f13
Harden semantics for and and or macros.
...
There was perviously a bit of fuzziness on returning false/nil
from these macros that has been removed.
2020-03-06 08:37:59 -06:00
Leah Neukirchen
1aaa5618de
Make alt-backspace behave like ctrl-w.
...
Another common binding in readline and its clones.
2020-03-06 10:55:45 +01:00
Calvin Rose
fbe8998ca8
Merge branch 'master' of github.com:janet-lang/janet
2020-03-05 09:35:04 -06:00
Calvin Rose
47e8f669f5
Fix match behavior for lone nil.
2020-03-05 09:35:00 -06:00
Leah Neukirchen
bc2ebce086
Make ctrl-d behave like delete, but exit on an empty line.
...
This is the default readline behavior.
2020-03-04 14:56:04 +01:00
Calvin Rose
6bc67b70a6
Address #294
...
Correct invalid format string, which masked a panic
with another, less useful panic.
2020-03-03 22:26:26 -06:00
Calvin Rose
2349ea9405
Update docs for buffer/push-word
...
Should be little endian, not big endian.
2020-03-01 12:05:24 -06:00
Calvin Rose
b17bf259f7
Fix typo: destory -> destroy
2020-02-28 09:04:28 -06:00
Calvin Rose
6b093bdcca
Address #288 and partially #287
...
The %q formatter for janet_formatc now expects a Janet, not a JanetString or
JanetSymbol or JanetKeyword.
Also fix some reference counting issues with threads when destroying
threads, which should fix #287 's
SIGSEGV. Still fails to send messages sometimes, though.
2020-02-27 17:58:17 -06:00
Calvin Rose
10ec319c32
Add better debug info to amalgamated source.
2020-02-27 00:16:54 -06:00
Calvin Rose
8262290bff
Improve C string format (janet_formatc, janet_panicf)
...
The supported formatters here now match up more with
the string/format, buffer/format, printf, eprintf, etc.
2020-02-25 20:05:45 -06:00
Calvin Rose
734c85d7ef
Properly handle recursion with labels.
...
Use an empty buffer, which has pointer equality semantics, for
tag from a label.
2020-02-23 17:35:01 -06:00
Calvin Rose
05bd5767de
Add label macro.
...
A lexically scoped version of prompt is often useful.
2020-02-23 17:15:04 -06:00
Calvin Rose
59d288c429
Add prompt
and return
.
...
User friendly delimited continuations. While this was doable with
signals before, this does not require C and will play nicely with
existing error handling, defers, and with statements.
2020-02-23 16:46:54 -06:00
Calvin Rose
8c41c0b6a7
Address MSVC warning.
2020-02-23 15:27:57 -06:00
Calvin Rose
738490e674
Allow function that takes 1 argument to fiber/new.
...
This allows reuse of closures when creating many fibers.
2020-02-23 14:47:29 -06:00
Calvin Rose
6a13703e32
Add signal
and fiber/can-resume?
.
...
These additions, along with the change that user signals 0-4 cannot
be resumed, allow delimited continuation semantics, while repsecting
existing forms like `defer`, `with`, `with-vars`, etc.
2020-02-23 13:31:27 -06:00
Calvin Rose
aaabca6fc7
Make flychecker handle more kinds of defs.
...
This should help when redefining certain forms. Will also
not do functional arity checking against nil forms, as that
is the default value when a def doesn't evaluate.
2020-02-21 21:20:40 -06:00
Calvin Rose
4b440618d6
Correct docs for type form.
2020-02-21 20:22:43 -06:00
Calvin Rose
a360cb7922
Update marshal to take 3 arguments.
2020-02-15 10:04:44 -06:00
Calvin Rose
b9a2bb8104
Fix documentation for defer.
2020-02-12 09:34:23 -06:00
Calvin Rose
031a9894b0
Update inlining options for next
and resume
.
2020-02-08 13:03:03 -06:00
Calvin Rose
fcc09d7ea9
Clarify docs for some
and all
.
2020-02-05 21:06:39 -06:00
Calvin Rose
d8d482e433
Merge branch 'master' of github.com:janet-lang/janet
2020-02-03 18:18:29 -06:00
Calvin Rose
3fdc053d6c
Add flush and eflush ( #278 )
...
These functions interact with Janet's dynamically scoped
IO functions in a manner that is more useful the file/flush.
We can still redirect to a buffer without changing our code.
2020-02-03 18:14:32 -06:00
Josef Pospíšil
00107c092c
Fix next function arity
2020-02-03 15:36:42 +01:00
Calvin Rose
64e1961193
Update version strings to 1.7.1-dev.
2020-02-02 09:38:44 -06:00
Calvin Rose
f7ee8bd30d
Update to version 1.7.0.
2020-02-01 23:35:17 -06:00
Calvin Rose
1bdde9c4f7
Fix warnings.
2020-01-28 23:46:14 -06:00
Calvin Rose
333ae7c4f8
Make amalgamtion the default when building.
...
This way we can support fewer build configurations. Also, remove
all undefined behavior due to use of memcpy with NULL pointers. GCC
was exploiting this to remove NULL checks in some builds.
2020-01-28 23:38:52 -06:00
Calvin Rose
f7b7c83264
Address #276
2020-01-25 12:08:43 -06:00
Calvin Rose
6f9c9879ca
Add var-
...
We had defn-, def-, defmacro-, but no var-.
2020-01-24 22:52:28 -06:00
Calvin Rose
b8df47e063
Fix regression in take/drop.
2020-01-24 17:39:25 -06:00
Calvin Rose
9dad8bf56d
Remove min-order and max-order.
...
Also address #275 by exposing lflags and cflags
to declare-executable
2020-01-24 17:35:21 -06:00
Calvin Rose
689f2dcbb4
Change default import prefix.
...
Changed from `(string path "/")` to
`(string (last (string/split "/" path)) "/)`.
2020-01-24 16:54:06 -06:00
Calvin Rose
163e2a5b22
Add string support to %j format.
2020-01-24 08:52:27 -06:00
Calvin Rose
e36334e14b
Revert issue with removing buffer self print check.
2020-01-23 23:39:49 -06:00
Calvin Rose
28d41039b8
Add mod function to core.
...
The `mod` function is a pair function with `%`, or te remainder
function and is distinct from it. This is taken from common lisp.
2020-01-23 18:54:30 -06:00
Calvin Rose
b8d530da36
Remove file/fileno and file/fdopen.
...
Also fully add call function pointer to
abstract types, including in methods, etc.
2020-01-23 09:01:33 -06:00
Calvin Rose
4fad0714e7
Add janet_gcpressure. Address #269 .
2020-01-22 20:52:35 -06:00
Calvin Rose
ca17eb4a2b
Address #273
2020-01-22 19:01:49 -06:00
Calvin Rose
4fe005e3c3
Add righthand operator overloading.
...
This is like python. Now, we just need to readd fuzzy
comparisons to have what python needs. Overloading
math functions would be neat, too.
2020-01-22 18:59:41 -06:00
Calvin Rose
2f9ed8a572
Use memmove instead of copying.
...
Also some comment things, and re-add old code from linenoise.
It seems to have a purpose for some keyboard layouts, so I will leave
it.
2020-01-21 23:11:00 -06:00
Calvin Rose
688e18a891
Merge pull request #268 from crocket/master
...
Make REPL key bindings more similar to those on GNU readline.
2020-01-21 23:09:45 -06:00
crocket
8162c64ca3
Make REPL key bindings more similar to those on GNU readline.
...
* I deleted Alt-H and Alt-L because Ctrl-F and Ctrl-B serve the same
roles.
* Ctrl-W, Alt-D, Alt-F, and Alt-B behave more similarly to the same
key bindings on GNU readline.
* Improved documentation of REPL keybindings on man page.
* Home and End keys now work on more terminal environments.
* Removed bindings for `Esc OH` and `Esc OF` because andrewchambers
doesn't need those bindings and the bindings don't seem to make much
sense for Home and End. `Esc O` is Single Shift Select of G3 Character
Set in xterm. https://invisible-island.net/xterm/ctlseqs/ctlseqs.html
2020-01-22 13:55:44 +09:00
Calvin Rose
e179f26d50
Add call function pointer to abstract types.
...
This will allow better JITs, FFIs, DSLs, etc.
2020-01-21 18:22:24 -06:00
Calvin Rose
8db68c04c4
Merge branch 'master' of github.com:janet-lang/janet
2020-01-21 17:48:54 -06:00
Calvin Rose
7c92c64730
Remove mutable operators on inttypes.
...
Mutations break hash table invariants, are a rather
silly performance optimization for a language like Janet.
2020-01-21 17:47:34 -06:00
Andrew Chambers
46f57f5c38
Make file/close idempotent.
...
It is easier to use constructs like defer
with complex control flow if it is safe to close
a file twice.
2020-01-21 22:03:57 +13:00
Calvin Rose
1ec2e08f21
Add manpage docs for repl keybindings.
2020-01-20 17:29:29 -06:00
Calvin Rose
77742dec11
Add source file info on macro compiler error.
2020-01-20 16:45:57 -06:00
Calvin Rose
3cb947b37e
Fix macro errors.
...
debug/stacktrace was being called incorrectly.
2020-01-20 16:05:08 -06:00
Calvin Rose
2dd852da54
Use ATEND macros to add fields to abstract types.
...
This means we can add new properties to abstract types without
breaking old code. We can also make simple abstract types without
needing to add many NULL fields to the type.
2020-01-20 13:06:50 -06:00
Calvin Rose
f4ad627b54
Fix regression in while loops inside each macros.
...
There was a specialization for `(while (not= nil _) ...)` that
was incorrect when the while loop regresses to a thunk.
2020-01-19 16:25:10 -06:00
Calvin Rose
68a5667a1a
Add history first and history last shortcuts.
...
Alt-, and Alt-.
2020-01-19 15:45:04 -06:00
Calvin Rose
693c6d63d4
Add alt-d binding to repl.
2020-01-19 11:39:10 -06:00
Calvin Rose
f18c3323ea
Clear completion list if fully complete.
2020-01-19 11:31:42 -06:00
Calvin Rose
f74e19e673
Improve alt keys and at alt-f and alt-b to repl
2020-01-19 11:16:41 -06:00
Calvin Rose
da70807292
Make autocompletion more zsh like
...
Also add a few ctrl sequences from readline, and
ignore unknown ctrl sequences.
Address #264
Adds Ctrl-n, Ctrl-p, and Ctrl-w
Ignores unknown ctrl sequences
No alt-* sequences yet.
2020-01-19 10:38:35 -06:00
Calvin Rose
64b9482602
Make history not duplicate itself in getline.
2020-01-18 20:56:35 -06:00
Calvin Rose
064475cb8d
Add eachk and eachp.
...
These should make iterating over datastructures easier
without needing the loop macro.
2020-01-18 18:46:49 -06:00
Calvin Rose
f4077b678a
Allow calling next on abstracts.
...
This will allow the creation of infinte
streams, low cost generators, etc.
2020-01-18 18:09:20 -06:00
Calvin Rose
51678c1aba
Extend power of the each form
...
This changes the implementation of the `next` function which
is now used to implement each. This let's us iterate over
more types, not just tables and structs.
2020-01-18 17:55:07 -06:00
Calvin Rose
65d7c3eed1
Use stderr for getline output instead of stdout.
2020-01-18 14:34:29 -06:00
Calvin Rose
41bb8c543b
Merge branch 'master' of github.com:janet-lang/janet
2020-01-18 09:46:37 -06:00
Calvin Rose
bbd7355313
Merge pull request #259 from andrewchambers/futureproofhash
...
Make hash api more future proof.
2020-01-18 09:45:47 -06:00
Calvin Rose
772916593b
Address #262
...
Pressing tab only does one thing at a time.
2020-01-18 09:44:59 -06:00
Calvin Rose
9d8af7355f
Improve getline.
2020-01-18 00:30:46 -06:00
Calvin Rose
521a29446f
Don't rely on obscure printf features.
...
They may not work on all platforms.
2020-01-18 00:27:40 -06:00
Calvin Rose
a8e4c4bed0
Add special forms and sort completions.
...
Also fix case when no completion is needed.
2020-01-18 00:17:08 -06:00
Calvin Rose
6471b4d100
Add preliminary repl completion via tab.
2020-01-17 23:03:50 -06:00
Calvin Rose
7f9b2b34d1
Clarify import docs for dynamic bindings.
2020-01-17 18:06:00 -06:00
Calvin Rose
789c5f135a
Add ctrl-a and ctrl-e to control line in repl
...
Emacs to start of line and to end of line key bindings.
2020-01-17 09:33:30 -06:00
Andrew Chambers
344f0b743d
Make hash api more future proof.
2020-01-17 17:25:40 +13:00
Calvin Rose
23c7c3bf1c
Allow disabling keyed hash function (prf) in conf
...
In some cases, one might want to disable what is currently
SipHash for speed / better security mechansims. For example, using
red black trees for caches rather than hash tables.
2020-01-16 21:06:03 -06:00
Calvin Rose
3d117804dd
Merge branch 'master' into HEAD
2020-01-16 20:08:34 -06:00
Calvin Rose
77bb0ebe3f
Add limits to format to discourage huge prints.
...
This should make system crashing prints happen less often in repl.
Instead, display a ...
2020-01-16 18:57:01 -06:00
Calvin Rose
6d9e51e4be
Fix documentation for if-with.
...
It was the same as when-with.
2020-01-16 18:12:05 -06:00
Calvin Rose
174ff87946
Change printing of abstracts with tostring in pp
...
This change makes pretty printing not hide "abstractness".
2020-01-16 18:10:17 -06:00
Andrew Chambers
ea02b2fde9
Use siphash for string hashing.
...
The hash key still needs to randomly initialized
for the security advantage, but this patch is a
step closer to avoiding hash based DOS.
Further work may including exposing the raw hash
function for use by abstract types who also choose to
implement hash.
2020-01-17 12:06:55 +13:00
Calvin Rose
962cd7e5f5
Add when-with and if-with
...
This is useful for reading from files.
2020-01-15 22:56:40 -06:00
Calvin Rose
65be9ae095
Add defer and assert to the core.
2020-01-15 22:39:14 -06:00
Calvin Rose
bc2bac8cd3
Fix memory issue in allocating decode buffer.
...
Since the decode table is currently a single table
per thread, we just make it a thread local to avoid
issues.
2020-01-15 19:58:14 -06:00
Calvin Rose
b567ece401
Address #252
...
Add repeat form (instead of exactly).
2020-01-14 19:58:03 -06:00
Calvin Rose
04579664fd
update parse.c
2020-01-12 22:43:39 -06:00
Calvin Rose
f709d7eb40
Add module/add-paths
...
This should make it much easier to make custom DSLs work
well with the import system. No need to mess about with import paths,
things will just work.
2020-01-12 20:59:45 -06:00
Calvin Rose
2df8660f8b
Avoid buffer overrun
...
On very long binding names > 256 characters, a buffer overrun would be
trigger in janet_cfuns. Not a huge issue, since this is not really code
that would ever be user facing, but we can fix this.
2020-01-12 11:31:41 -06:00
Calvin Rose
a68ee7aac6
Update Copyright 2020.
2020-01-12 10:50:37 -06:00
Calvin Rose
0e7cf51890
Fix MSVC warnings.
2020-01-12 10:19:51 -06:00
Calvin Rose
b54d9725d8
Fix MSVC errors.
2020-01-12 10:18:03 -06:00
Calvin Rose
2f0570aad6
Address #249
...
If JANET_ENTRY_NAME is defined, we are compiling into a single binary.
In this case, we don't want to define the config symbol multiple times
with same name, as this causes the linker error.
2020-01-12 10:13:06 -06:00
Calvin Rose
3d40c95e80
Add ability to Janet signal from C functions.
...
While C functions are not re-entrant, signaling from a C function
can be used to implement async returns. When resuming a fiber that
signalled from within a C function, the fiber is started after the
instruction that emitted the signal. The resume argument is used
as the return result from the c function.
2020-01-10 20:44:16 -06:00
Calvin Rose
ed5027db5d
Address #242
...
Synchronize critical sections in setenv/getenv/environ.
2020-01-06 22:41:18 -06:00
Andrew Chambers
ec1a06cfaf
Optional default value for os/getenv.
2020-01-07 11:21:05 +13:00
Calvin Rose
212aceedc6
Fix useless type conversion.
2020-01-02 22:12:07 -06:00
Calvin Rose
e6f897f4ef
Merge branch 'master' of github.com:janet-lang/janet
2020-01-02 22:10:13 -06:00
Calvin Rose
6c7f376410
Try to remove potential overflow bugs.
...
Also make integer to size_t casts explicit rather than relying on
int32_t * sizeof(x) = size_t. This is kind of a personal preference for
this problem.
2020-01-02 22:08:17 -06:00
Calvin Rose
e93e237c67
Merge pull request #236 from andrewchambers/scratch_calloc
...
Add scratch calloc.
2020-01-02 20:29:10 -06:00
Calvin Rose
a2c45a697b
Address #234 in array.c
2020-01-02 20:27:38 -06:00
Andrew Chambers
acdbf8911c
Add scratch calloc.
2020-01-03 12:10:17 +13:00
Calvin Rose
a15d841b5b
Address #232
...
Fix segfault on macro arity mismatch in compile.c by adding missing return statements.
2019-12-31 11:33:03 -05:00
Calvin Rose
75bb8fbcd1
Amalg script included janet.h before test macros.
2019-12-30 22:08:12 -05:00
Calvin Rose
9cb25ad7b1
Remove some feature test macros.
...
_BSD_SOURCE is deprecated and not needed.
2019-12-30 21:30:13 -05:00
Calvin Rose
f361830cb2
Update feature test macro in line.c
2019-12-30 20:24:40 -05:00
Calvin Rose
9dd152dc28
Add features.h for feature test macros.
...
Because we use an amalgated build, feature
test macros should be set in a single file that
is included before any other headers, and is placed
at the top of the amalgamated build.
2019-12-30 19:06:15 -05:00
Calvin Rose
2ba4337e6f
Remove all feature test macros from janet.h
...
This should help improve compatibility with other C code.
2019-12-30 15:12:17 -05:00
Calvin Rose
48fcd927ab
Merge branch 'master' of github.com:janet-lang/janet
2019-12-30 14:26:38 -05:00
Calvin Rose
407d8af026
Address #233
...
Move _POSIX_C_SOURCE to internal header.
2019-12-30 12:31:26 -05:00
Calvin Rose
d0570b55b1
Merge pull request #231 from andrewchambers/tempfile
...
Add file/temp.
2019-12-29 20:00:17 -05:00
Calvin Rose
a964a95c1e
Fix warnings on BSDs.
2019-12-29 19:53:35 -05:00
Andrew Chambers
c2f8441572
Add file/temp.
2019-12-30 12:00:35 +13:00
Calvin Rose
099a957e6c
Update macex1 to properly handle break
...
Things mostly worked fine, but technically
break should be handled as a special form not a function call.
2019-12-29 16:44:53 -05:00
Andrew Chambers
2bebace8eb
Extend file api to allow creating and checking.
2019-12-30 04:02:46 +13:00
Calvin Rose
5142722da3
Remove aliases for deprectaed functions.
2019-12-28 17:51:05 -05:00
Calvin Rose
52dd0f132a
Remove emscripten build.
...
Prefer using custom toolchain with amalgmated build.
2019-12-28 16:11:15 -05:00
Calvin Rose
022be217a2
Remove ==, not==, and order[<,<=,>,>=].
...
This unifies equality and comparison checking. Before, we had
separate functions and vm opcodes for comparing general values vs.
for comparing numbers, where the numberic functions were polymorphic and
had special cases for handling NaNs. By unfiying them, abstract types
can now better integrate with other number types and behave as keys.
For now, the old functions are aliased but will eventually be removed.
2019-12-28 16:04:15 -05:00
Calvin Rose
5528bca7a9
Version bump to dev version.
2019-12-28 11:58:40 -05:00
Andrew Chambers
ddc4274314
Expand docs to explain pclose semantics.
2019-12-28 15:24:10 +13:00
Calvin Rose
da93a73dbd
Version bump to 1.6.0.
2019-12-22 12:09:56 -05:00
Calvin Rose
3492ed6d88
Windows installer pulls version from interpreter.
...
This should make version updates simpler. Also
try an make installer write to ProgramFiles instead
of ProgramFiles (x86) for 64 bit build.
2019-12-19 13:18:46 -05:00
Calvin Rose
e28262f5ab
Add array/fill
...
This function has similar semantics to buffer/fill.
2019-12-19 12:58:11 -05:00
Calvin Rose
94246f7574
Use infinite timeout to indicate non-blocking.
...
Makes more sense than negative numbers.
2019-12-18 16:07:06 -05:00
Calvin Rose
07b0ef1648
Throw error on bad thread creation.
2019-12-18 15:49:57 -05:00
Calvin Rose
6a39c4b91d
Pass thread body explicitly in thread/new.
...
Doing it via thread/send make sense, but is a bit
strange. Passing the body explicitly will make more
sense to API users.
2019-12-18 15:07:46 -05:00
Calvin Rose
b9f0f14e31
Add array/new-filled
...
Similar function signature to buffer/new-filled.
2019-12-18 13:02:50 -05:00
Calvin Rose
4238379552
Use _setjmp/_longjmp on BSDs.
...
This doesn't save the signal mask so should be a bit faster.
2019-12-18 12:18:31 -05:00
Calvin Rose
2b2c1ff917
Get rid of warning on BSDs.
2019-12-15 16:04:43 -06:00
Calvin Rose
c7912249b2
Typo in #ifdef.
2019-12-15 15:56:26 -06:00
Calvin Rose
b8004555ea
Start cleaning up defines in janet.h
2019-12-15 15:41:58 -06:00
Calvin Rose
58ff7f0788
BSD os.c fix with arc4random.
2019-12-15 12:47:12 -06:00
Calvin Rose
f1afc5b0b4
Address #214
...
This adds several common patterns, which are defined in
boot.janet. This essentially gives more primitive patterns
to work with out of the box.
Fix build when JANET_REDUCED_OS is defined.
2019-12-14 20:39:14 -06:00
Calvin Rose
bc8ee207d5
Address #219 .
...
Adds several shorthands to the C API.
2019-12-14 11:31:46 -06:00
Calvin Rose
76342540dc
Add buffer/fill. Address #221
2019-12-14 10:54:29 -06:00
Calvin Rose
56784a34a1
Address #224 - Exposed file flags in janet.h
...
A caller can check if a file is closed with
if (flags & JANET_FILE_CLOSED) ...
2019-12-14 09:03:56 -06:00
Calvin Rose
c3f1b54171
Update jpm path settings.
...
This will make it easier to use jpm as a per-project
management tool, as well as easier to set up individual
module trees.
2019-12-12 19:35:40 -06:00
Calvin Rose
9b7d642c38
Window x86 needs isnan.
2019-12-12 19:04:13 -06:00
Calvin Rose
aa7f3411f5
Use JANET_SINGLE_THREADED to disable threads.
2019-12-12 17:39:22 -06:00
Calvin Rose
5b9eda5e87
Add root-env
...
This makes images smaller without needing to make sure
that no references to the root environment occur in the final
image.
2019-12-12 17:25:04 -06:00
Calvin Rose
7c2ae45809
Fix some merge issues.
...
Make everything compile, and test-install pass.
2019-12-12 17:14:36 -06:00
Calvin Rose
36b2f27873
Merge branch 'master' into threads-3
2019-12-12 17:07:03 -06:00
Calvin Rose
b8e02afd1a
Improve error messages in os.c and jpm
...
In os/* functions, show failed path name. In jpm, indicate
a permission issue if we can't stat the file.
2019-12-12 03:20:20 -06:00
Calvin Rose
0fc36aa5d0
Signal to pending threads more often.
2019-12-12 02:19:56 -06:00
Calvin Rose
38f7e256d0
Port threads code to Windows API
...
Can run demo in examples/threads.janet
2019-12-10 20:32:41 -05:00
Calvin Rose
4187c972a3
Switch to multiple buffers per mailbox.
...
Needs less copying.
2019-12-10 13:26:00 -06:00