Commit Graph

560 Commits

Author SHA1 Message Date
Alex Shelkovnykov
19cdaaa40c disable check_acyclic macro 2023-10-04 13:36:06 -06:00
Alex Shelkovnykov
2d1296c258 Merge branch 'status' into ctrlc 2023-10-04 13:09:18 -06:00
Alex Shelkovnykov
85afbb49eb Fix NockStack init; check outside stack for ptr seniority 2023-10-04 12:03:39 -06:00
Alex Shelkovnykov
1edd86a646 Merge branch 'status' into bug-fix 2023-10-04 11:50:12 -06:00
Alex Shelkovnykov
79ab07aa04 Fix merge conflicts 2023-10-04 10:06:14 -06:00
Alex Shelkovnykov
771a4fbb70 Fix merge conflicts 2023-10-04 09:59:54 -06:00
Alex Shelkovnykov
5c5a23809f Merge branch 'status' into trace 2023-10-04 09:53:31 -06:00
Alex Shelkovnykov
0fba14e2a2 Remove incorrect TODO 2023-10-04 09:51:06 -06:00
Alex Shelkovnykov
ab80c0cf8a Edits re: Ed feedback 2023-10-04 09:49:35 -06:00
Matthew LeVan
b08c5d2045 jets: add sha1 2023-10-04 11:45:25 -04:00
Matthew LeVan
cf3c62407f jets: add shal 2023-10-04 11:09:12 -04:00
Alex Shelkovnykov
ee7f768661 Merge branch 'status' into trace 2023-10-04 09:03:12 -06:00
Matthew LeVan
4ea46247f2 jets: add shas 2023-10-04 10:47:22 -04:00
Edward Amsden
37e18d1c97 Merge branch 'status' into eamsden/fast-jets 2023-10-03 20:31:32 -05:00
Edward Amsden
f5de9e7be8
Merge branch 'status' into eamsden/fix-memo 2023-10-03 20:30:33 -05:00
Edward Amsden
d5fd8028f6
Merge pull request #96 from urbit/pq/as-bytes
implement as_bytes() on Atom
2023-10-03 19:48:42 -05:00
Edward Amsden
08223691f9 noun: formatting 2023-10-03 19:15:37 -05:00
Edward Amsden
39c6604f37 interpreter: fix memo hints 2023-10-03 18:57:51 -05:00
Alex Shelkovnykov
b64b3a8351 Merge w/ #100 2023-10-03 17:56:39 -06:00
Edward Amsden
2ceba8cc3f
Merge pull request #99 from urbit/philip/doublejam
Fix loading from snapshot
2023-10-03 17:54:19 -05:00
Edward Amsden
e988b96341 unifying equality: fix senior_pointer_first 2023-10-03 16:47:42 -05:00
Philip Monk
3fc73919fc add convenient pattern to interrupt with gdb 2023-10-03 13:53:39 -07:00
Philip Monk
6607006c1e doublejam: fix loading from snapshot 2023-10-03 13:48:38 -07:00
Matthew LeVan
58af42ed02 jets: add shay and shax 2023-10-03 12:23:32 -04:00
Edward Amsden
9bc4e7ee9c interpreter: feature flag for sham hints 2023-10-02 04:42:55 -05:00
Edward Amsden
3022bf9ce6 nouns: function to assert a noun doesn't contain any forwarding pointers 2023-10-01 18:12:05 -05:00
Alex Shelkovnykov
5c436a8530 Merge branch 'trace' into ctrlc 2023-09-30 19:07:05 -06:00
Alex Shelkovnykov
147aabb524 Make Nock 11 tail recursive; use slots for mean stack 2023-09-30 18:46:28 -06:00
Philip Quirk
29c36a931d
Apply suggestions from code review
Remove mutable accessors.

Co-authored-by: Edward Amsden <edward@blackriversoft.com>
2023-09-29 12:25:23 -05:00
Philip Quirk
73f1d3d0fb implement add_bytes() on Atom 2023-09-28 21:22:56 -05:00
Matthew LeVan
9db720faaf Merge branch 'as/trace' into msl/urcrypt 2023-09-28 14:00:41 -04:00
Edward Amsden
994c657476 interpreter: fix memo cache 2023-09-28 11:08:48 -05:00
Edward Amsden
2ded720854 interpreter: formatting 2023-09-27 22:56:04 -05:00
Edward Amsden
2db74f9c0f interpreter: address lints for fast hints 2023-09-27 22:55:00 -05:00
Edward Amsden
4e292b88a0 interpreter: formatting 2023-09-27 22:32:40 -05:00
Edward Amsden
8d783d0b39 interpreter: working cold/warm/hot state, and new assertion functions for debugging 2023-09-27 22:31:17 -05:00
Alex Shelkovnykov
d02e2bc75b Fix linter issues 2023-09-27 16:38:16 -06:00
Alex Shelkovnykov
e04ad6c6bd Merge branch 'status' into trace 2023-09-27 16:31:29 -06:00
Matthew LeVan
589899b08c wip: add urcrypt-sys crate; install urcrypt on system in ci 2023-09-26 16:10:33 -04:00
Matthew LeVan
2f16a2dadf un-vendor urcrypt 2023-09-26 16:02:36 -04:00
Matthew LeVan
ef382a8090 urcrypt builds 2023-09-25 15:31:41 -04:00
Alex Shelkovnykov
ae674c1372 Add SIGINT handler 2023-09-25 00:08:51 -06:00
Edward Amsden
a0d11b305f jets: add decflow test case which trips a memory bug in cold state 2023-09-23 07:36:17 -05:00
Edward Amsden
b5d178f635 tests: add decfast.jam and decslow.jam, jetted/unjetted decrement of 2 billion 2023-09-22 23:12:33 -05:00
Edward Amsden
45eb2fe744 jets: dashboard functional 2023-09-22 23:11:59 -05:00
Edward Amsden
8e857f7c86 jets: fast dashboard plumbed in: attempt matches on 2 and 9, register on 11 2023-09-22 19:57:08 -05:00
Edward Amsden
95e1df9433 jets: lints and formatting 2023-09-22 17:46:25 -05:00
Edward Amsden
98d7c14c8c jets: cold/hot/warm dashboards (not yet integrated) 2023-09-22 17:42:47 -05:00
Matthew LeVan
6b7e21ba48 wip: add urcrypt 2023-09-22 13:30:51 -04:00
Alex Shelkovnykov
0072e09a85 Forward non-deterministic errors to the senior frame 2023-09-21 00:04:20 -06:00
Edward Amsden
e04d20c7de updates: 9-20-2023 (david/alex/jonathan/edward/neal) 2023-09-20 13:43:52 -05:00
Alex Shelkovnykov
95083f7b78 WIP 09/19 2023-09-19 20:47:21 -06:00
Alex Shelkovnykov
e5e0fad569 slog %crud events in toddler 2023-09-19 18:36:46 -06:00
Philip Monk
fc3df952fb refactor to use soft() 2023-09-19 16:15:49 -06:00
Philip Monk
767682307e wip add crud handling 2023-09-19 16:15:42 -06:00
Alex Shelkovnykov
d122f1d1cd run cargo fmt 2023-09-15 22:41:36 -06:00
Alex Shelkovnykov
5970061218 hook up +mook to first time play 2023-09-15 22:40:03 -06:00
Alex Shelkovnykov
82e2fcbd91 unify logic for flopped/unflopped +mook 2023-09-15 21:36:09 -06:00
Alex Shelkovnykov
25c0ad7778 hook up +mook to +slam 2023-09-15 21:18:22 -06:00
Sigilante
517c20bafb Start crypto shax/shay. 2023-09-15 16:06:42 -05:00
Sigilante
7fd9f41cad Post jet_peg and tests. 2023-09-15 15:33:09 -05:00
Alex Shelkovnykov
841301a251 hoon, jets: add +slow for %ud 2023-09-15 12:43:59 -06:00
Alex Shelkovnykov
58a512c035 Merge branch 'status' into trace 2023-09-15 09:33:11 -06:00
Sigilante
1b66767291 Clean up peg jet. 2023-09-15 09:48:48 -05:00
Jonathan Paprocki
7070fad4e5 Merge branch 'status' into jon/hamt-preserve-no-lw 2023-09-14 13:01:31 -04:00
Jonathan Paprocki
02ffe3ddb7 hamt: use expect() instead of let .. else
Co-authored-by: Edward Amsden <edward@blackriversoft.com>
2023-09-14 12:27:01 -04:00
Alex Shelkovnykov
1944c0294e WIP 09/13 2023-09-13 22:30:59 -06:00
Edward Amsden
6e0e5d103b
Merge branch 'status' into y/import-fix 2023-09-13 21:31:07 -05:00
Jonathan Paprocki
2bfe5a06c6 hamt: preserve traversal_stack uses rust stack
this was using the lightweight stack, but this presented the following
issue: NockStack::copy() can be called during the Hamt::preserve() call,
and the lightweight stack may not be empty. NockStack::copy() presumes
that the lightweight stack is empty when it is called, and thus tried to
pop elements that preserve() had pushed onto it.

NockStack::copy() should probably assert that the lightweight stack is
empty when its called
2023-09-13 13:51:20 -04:00
Jonathan Paprocki
028519edd7 mem: assert stack_is_empty() when it should be
if these functions are callled with a non-empty lightweight stack, they
will try to pop things that they shouldn't.

all other stack_is_empty() callsites happen in a fresh stack frame, so
we already know the lightweight stack will be empty.
2023-09-13 13:44:33 -04:00
Alex Shelkovnykov
67abda479e WIP 09/12 2023-09-12 22:20:15 -06:00
Alex Shelkovnykov
54a9ec980f Merge branch 'status' into trace 2023-09-11 19:38:12 -06:00
Yaseen
999504ef4e
ares: make ibig dep a relative path so importing as a crate works properly
- using patch.crates-io does not work because it only applies to the local crate development and not as a setting for consumers of the package

thanks to @drbeefsupreme for the original fix

Co-authored-by: <drbeefsupreme@discordja.net>
2023-09-11 13:20:28 -04:00
Alex Shelkovnykov
54f982bf4d WIP - 09/10 2023-09-10 23:13:07 -06:00
Alex Shelkovnykov
96a8915cc3 WIP - 09/09 2023-09-10 09:51:25 -06:00
Sigilante
39cfd709bc WIP jets 2023-09-08 22:00:19 -05:00
Sigilante
2aabf2e8a7 Add min/max jets. 2023-09-06 13:02:33 -05:00
Edward Amsden
f056a796a3
Merge branch 'status' into eamsden/lightweight-stack-2 2023-09-06 11:01:52 -05:00
Edward Amsden
e2f1ad15e1 nix: rust: bump versions in dev shell 2023-09-06 10:22:25 -05:00
Edward Amsden
576b511065 interpreter: address new lints 2023-09-06 10:18:43 -05:00
Edward Amsden
1705b9e81b
Merge branch 'status' into eamsden/lightweight-stack-2 2023-09-06 09:36:17 -05:00
Edward Amsden
1494915aa9
interpreter: remove unnecessary cast. 2023-09-06 08:43:30 -05:00
Alex Shelkovnykov
0480fe615b style: run cargo fmt 2023-09-05 23:05:23 -06:00
Alex Shelkovnykov
4af4ac7296 jets: remove math helpers from bit jets 2023-09-05 22:48:31 -06:00
Alex Shelkovnykov
d187f64d5a jets: reorganize jets 2023-09-05 22:48:26 -06:00
Alex Shelkovnykov
e9f203e4bd jets: modify +can tests 2023-09-05 22:47:29 -06:00
Alex Shelkovnykov
a0e3bb03d1 jets: minor fix to +cat jet 2023-09-05 22:47:29 -06:00
Alex Shelkovnykov
6019240d01 hoon, jets: add +rap 2023-09-05 22:47:29 -06:00
Alex Shelkovnykov
b2f61d6b95 jets: lower bloq safety to 48-bit addresses 2023-09-05 22:47:21 -06:00
Alex Shelkovnykov
c6580f30da jets: add bloq helper function 2023-09-04 15:27:36 -06:00
Alex Shelkovnykov
bb244ee52b jets: add checked helper functions 2023-09-04 15:27:36 -06:00
Alex Shelkovnykov
a90b23d263 hoon, jets: add +mas 2023-09-04 15:27:28 -06:00
Alex Shelkovnykov
15656c1fe2 jets: move shared functions into jets::util(::test) 2023-09-04 15:27:28 -06:00
Alex Shelkovnykov
5a2e4eec57 hoon, jets: add +cap 2023-09-04 15:27:14 -06:00
Alex Shelkovnykov
104fffca96 noun: move slot lookup into noun crate 2023-09-01 16:12:27 -06:00
Edward Amsden
a9a7db4606 interpreter: add comments to protect assert_no_alloc 2023-09-01 13:53:53 -05:00
Edward Amsden
9d8e43c91b Put assert-no-alloc-able allocator in lib.rs instead of main.rs 2023-09-01 13:46:28 -05:00
Edward Amsden
5a15bde2aa interpreter: add list repeat testcases from ~datnut-pollen with tc and non-tc variants 2023-09-01 13:31:53 -05:00
Edward Amsden
d610442e8b interpreter: make sure called formulas in new frames are recorded as being in tail position 2023-09-01 13:31:08 -05:00
Edward Amsden
0f6d574526 main: make assert_no_alloc actually assert 2023-09-01 10:43:24 -05:00
Jonathan Paprocki
2da536f12c test_data: add (shax 0x1) jamfile
built on a ship that has the math.rs %sham jets
2023-09-01 11:12:30 -04:00
Edward Amsden
7e4558e4f9 interpreter: fix lints 2023-08-31 14:44:21 -05:00
Edward Amsden
f52d6d96db interpreter: fix lints 2023-08-31 14:42:20 -05:00
Edward Amsden
69edca94da interpreter: remove debugging 2023-08-31 14:12:05 -05:00
Edward Amsden
92e98cba29 interpreter: make nock 2 tail have correct subject 2023-08-31 14:09:56 -05:00
Edward Amsden
bfecdf9aa4 interpreter: bugfixes 2023-08-31 13:21:06 -05:00
Edward Amsden
53635decf6 Merge branch 'status' into eamsden/lightweight-stack-2 2023-08-31 00:25:29 -05:00
Edward Amsden
68dc6cb169 rust shell: include gdb 2023-08-31 00:25:20 -05:00
Edward Amsden
e4d556dc17
Merge pull request #74 from urbit/jon/copy-fix
copy() memory issue fix
2023-08-31 00:24:07 -05:00
Edward Amsden
276286c114 interpreter: clippy 2023-08-31 00:05:26 -05:00
Edward Amsden
3cd735a182 interpreter: format 2023-08-30 23:50:09 -05:00
Edward Amsden
52d4a7a327 interpreter: use lightweight stack and do TCO 2023-08-30 23:44:27 -05:00
Jonathan Paprocki
15bbe68cc1 mem: fix copy() allocation of indirect atoms
addresses #73
2023-08-29 17:26:11 -04:00
Jonathan Paprocki
02c205242d jam, mug: need their own stack frames
addresses #71

tests: add jam cell test

fix cargo fmt
2023-08-29 16:40:49 -04:00
Edward Amsden
972103de7c
jets: use D macro in jet_cut
Co-authored-by: Philip Monk <phil@pcmonk.me>
2023-08-28 21:06:56 -05:00
Edward Amsden
1479e3a98a jets: fix cut for 0 run 2023-08-26 09:44:06 -05:00
Alex Shelkovnykov
0cf41842e3 jets: add advanced test for mink jet 2023-08-22 12:21:41 -06:00
Alex Shelkovnykov
d510a33c02 jets: add mink jet 2023-08-21 10:49:37 -06:00
Alex Shelkovnykov
19048014a3 ares: add %hand, %hunk, %lose, and %mean hints 2023-08-16 16:31:00 -06:00
Alex Shelkovnykov
554885975a ares: add mean stack and %slog hint 2023-08-16 16:30:57 -06:00
Alex Shelkovnykov
bae335275b ares: refactor hints to use option; fix hint tag bug 2023-08-16 16:30:22 -06:00
Alex Shelkovnykov
b804a549a8 stack: fix minor bug in split stack setup 2023-08-16 16:30:17 -06:00
Alex Shelkovnykov
995f64da8c
Merge pull request #63 from ashelkovnykov/tests
Unit tests for the PMA
2023-08-15 16:18:58 -06:00
Alex Shelkovnykov
47644d16dc pma: add unit/integration tests 2023-08-15 16:11:23 -06:00
Jonathan Paprocki
81a7eb780c split: implements split stack
see docs/stack.md for information about this change.

split: replace Polarity enum with pointer check

we can check polarity with West === FP < AP,
East === FP > AP.

we panic when the pointers are equal.

split: pre_copy step before preserve() calls

we need to save the stored frame_pointer and alloc_pointer before
preserve calls, which will otherwise overwrite them.

split: copy_west(), now with stack_pointer!

when copying, we can forget the lightweight stack in the current frame
and start a new one adjacent to from-space used for traversing nouns
in from-space.

split: working split stack

this commit works with hurray.jam and decrement.jam.

there's at least one thing left: I don't think the implementation of
hamt::preserve() is correct, but hurray.jam and decrement.jam don't use
it so it doesn't detect it. the comment there explains whats wrong.

I also need to double check copy_pma() still.
 This is the commit message #52:

split: hamt::preserve() and free_alloc

hamt::preserve() needs to allocate in the current frame after we've
already said we can no longer allocate (once pre_copy() has been
called). so does e.g. copy_west(), since it moves the lightweight
stack into this same area. we can unify this interface but I want
to explore the ergonomics of making this free allocation stuff usable
for the programmer without having to think about whether or not
pre_copy() has already been called.

split: add boolean for pre_copy()

alternative: use an enum to say whether the lightweight stack grows
westward or eastward, and that the reserved slots for the previous
frame's pointers are adjacent to the frame_pointer or alloc_pointer. not
sure which is the better choice yet.

split: panic when allocating at the wrong time

when pc == false, we aren't in copying mode (basically when we're
copying allocations to the previous frame to get ready to pop the
frame). therefore we should panic if we try to allocate in the previous
frame.

similarly, when pc == true, we're no longer allowed to allocate in the
current frame, but we can allocate in the previous frame. therefore we
should panic if we try to allocate in the current frame.

split: use prev_stack_pointer_pointer()

we'd like the programmer to not have to think about whether the frame is
in copying mode or not, so every time we want the previous frame's stack
pointer we should just called prev_stack_pointer_pointer() instead of
trying to remember if we need slot_pointer or free_slot.

we still use slot_pointer and free_slot for pushing and popping stack
frames, since we're in the midst of changing the pointers that would
determine where prev_stack_pointer_pointer() would look.

split: polarity of lw stack changes in pre_copy

It was waiting until copy_west/copy_east to do this - this makes it more
clear that the lightweight stack is different after pre_copy() is called

split: simplify is_west

asking this to panic in case of equality is assigning it too much
responsibility. it should just say whether or not a frame is west.

 This is the commit message #76:

split: copy_pma isn't in cleanup mode

we don't need to move the lightweight stack since we're not allocating
in a previous frame, but into the PMA

split: revise pre_copy() usage

pre_copy() is no longer public. instead, it is called at the start of
any NockStack method which could potentially be the first function called when
getting ready to pop a stack frame (preserve() and functions that
allocate in the previous frame).

main: trailing bytes of cued jamfile are zeroes

this was already the case, but it was doing so incorrectly.

write_bytes(dest.add(word_len as usize - 1), 0, 8)
copies 64 bytes of zeroes starting at the last word of the indirect
atom. this went unnoticed before split stack since allocation happened
at the west end of the memory arena. now that allocation starts at the
east end, this was causing an overflow. so the correct line is
write_bytes(dest.add(word_len as usize - 1), 0, 1)

split: memory in NockStack::new not mutable

it was before split stack, now its unnecessary and throws a compiler
warning. im confused as to why it was ever there at all, though
2023-08-11 12:54:57 -04:00
Alex Shelkovnykov
d02d0373e2 pma: add comment to document write/pwrite usage 2023-05-25 13:50:09 +00:00
Alex Shelkovnykov
1a4d5b15ec pma: fix void* arithmetic warnings 2023-05-25 13:43:05 +00:00
Alex Shelkovnykov
15948a3772 pma: fix old style function definition warnings 2023-05-25 13:38:50 +00:00
Alex Shelkovnykov
7c9e1fc393 pma: fix enum forward reference 2023-05-25 13:37:33 +00:00
Alex Shelkovnykov
56a2b1df8e pma: fix unused_result warning 2023-05-25 13:35:36 +00:00
Alex Shelkovnykov
0c56775dbe build: split build.rs profiles 2023-05-25 13:33:04 +00:00
Alex Shelkovnykov
c13e05a907 pma: fix toplevel_ref_arg linter warning 2023-05-20 19:20:14 +00:00
Alex Shelkovnykov
3245f9ea14 jets: fix toplevel_ref_arg linter warnings 2023-05-20 19:18:19 +00:00
Alex Shelkovnykov
960d3a37d7 jets: fix needless-borrow linter warning 2023-05-20 19:13:43 +00:00
Alex Shelkovnykov
da7954360e jets: fix unused-variable linter warnings 2023-05-20 19:13:37 +00:00
barter-simsum
1dd2dd2bd4 fix macos build 2023-05-18 22:04:49 -04:00
barter-simsum
b4aece5692 clang warnings 2023-05-18 22:04:49 -04:00
barter-simsum
5e91015f18 lint 2023-05-18 22:04:49 -04:00
barter-simsum
9df8d89901 comment explaining bp() 2023-05-18 22:04:49 -04:00
barter-simsum
3055552ef1 fix errant multi-page alloc assert
shared pages don't contain an offset. This must have accidentally been included
in the loop when it should have preceded it
2023-05-18 22:04:49 -04:00
barter-simsum
eb12e25ef2 prefix pma types with PMA + typedef prior to defn 2023-05-18 22:04:49 -04:00
barter-simsum
8d70e8d67e misc 2023-05-18 20:21:18 -04:00
barter-simsum
7b0cd288d5 unhook PMA from event lifecycle. use DoubleJam for persistence 2023-05-18 20:21:18 -04:00
Alex Shelkovnykov
78dcbd2d22 remove test files from before merge into ares repo 2023-05-18 20:21:18 -04:00
Alex Shelkovnykov
40852a1c86 replace accidentally deleted pwrite 2023-05-18 20:21:18 -04:00
barter-simsum
e83302376f at last no sigsegv due to fubar _pma_state->metadata refactor 2023-05-18 20:21:18 -04:00
barter-simsum
f3772c0be0 misc 2023-05-18 20:21:18 -04:00
barter-simsum
de52547506 _pma_state->metadata mem leak 2023-05-18 20:21:18 -04:00
barter-simsum
15c4af135c philip's pma changes inter alia 2023-05-18 20:21:18 -04:00
Alex Shelkovnykov
6374895d84 Move PMA code into Ares from separate repo 2023-05-08 08:58:01 -04:00
Aurimas Blažulionis
54661e9ed9
Comment bits check in rev jet 2023-04-22 21:06:35 +03:00
Aurimas Blažulionis
bb17526f9e
Normalize noun in jet rev 2023-04-20 23:25:39 +03:00
Aurimas Blažulionis
c9ff3ce67c
Add rev jet 2023-03-28 21:04:13 +03:00
Peter McEvoy
2a553a4aa8
Merge pull request #40 from urbit/peter/remove-dyn
Replace dynamic trait objects with static type parameters
2023-03-15 17:00:52 -04:00
Peter McEvoy
c422207864 Revert use std:: formatting changes 2023-03-15 10:24:03 -04:00
Edward Amsden
d5bb18946c
Merge branch 'status' into peter/remove-dyn 2023-03-14 23:03:09 -05:00
Philip Monk
b4d007174e Merge remote-tracking branch 'origin/peter/lint' into philip/pma 2023-03-14 20:55:58 -07:00
Philip Monk
6ecec97810 [ares] remove pma_malloc integration until further work 2023-03-14 20:51:53 -07:00
Peter McEvoy
f8b05fc53b Add leading _ to jet_name parameter 2023-03-14 18:27:03 -04:00
Peter McEvoy
be2af44231 Remove unused lifetime from Cell::tail_as_mut() 2023-03-14 18:26:21 -04:00
Peter McEvoy
38462557e5 Add clippy to Nix shell 2023-03-14 18:24:51 -04:00
Peter McEvoy
25e9798572 Replace dyn Stack objects with static type parameters 2023-03-14 18:00:18 -04:00
Peter McEvoy
133a478bdc Replace dyn NounAllocator objects with static type parameters 2023-03-14 18:00:12 -04:00
Peter McEvoy
36b591f3c8 Comment out partial implementation of get_jet_test_mode() 2023-03-14 12:21:57 -04:00
Peter McEvoy
4ceb48b5cf Add local type aliases for HAMT stem entries 2023-03-14 12:19:53 -04:00
Peter McEvoy
38d3c124ce Return Option<Jet> instead of Result<Jet, ()> from jets::get_jet() 2023-03-14 12:19:53 -04:00
Peter McEvoy
fff84ada17 Add noun::Error and noun::Result 2023-03-14 12:19:49 -04:00
Peter McEvoy
290b964d11 Apply additional lints suggested by cargo clippy 2023-03-14 11:41:46 -04:00
Peter McEvoy
b60100c806 Apply lints suggested by cargo clippy 2023-03-10 12:18:40 -05:00
Philip Monk
ffff0657b7 [ares] hook up pma_malloc to event lifecycle
All tests pass except the azimuth pill, which requires too many dirty
pages in one event.
2023-02-27 22:43:29 -07:00
Philip Monk
7c22096723 [ares] refactor snapshots 2023-02-27 16:46:48 -07:00
Philip Monk
2014cbbc46 [ares] factor pma into separate module, fix warnings 2023-02-27 15:51:27 -07:00
Philip Monk
9400ad2bfa [pma_malloc] various fixes 2023-02-24 22:31:27 -07:00
Philip Monk
3760bc4e83 [pma_malloc] vendor pma_malloc 2023-02-24 22:31:19 -07:00
Philip Monk
63361cb4a0 [ares] vendor ibig-rs with our changes 2023-02-23 20:50:46 -07:00
Philip Monk
a847f8d986 [ares] add noun mass() calculator 2023-02-23 20:41:39 -07:00
Philip Monk
966074d928 [ares] rustfmt 2023-02-23 20:37:14 -07:00
Philip Monk
e1d3f574c4 Merge branch 'philip/alloc' into eamsden/hamt 2023-02-23 17:12:40 -07:00
Edward Amsden
ec48de56ac [ares] use fenix to get rust for nix shell 2023-02-23 18:03:30 -06:00
Edward Amsden
36c0f182ee [ares] [hamt] tell rust it's really OK for us to pack this generic struct, since it only contains pointers to the generic type 2023-02-23 18:01:37 -06:00
Edward Amsden
e79781c892 [ares][stack] fix in_frame test polarity (thanks to @philipcmonk) 2023-02-23 15:04:53 -06:00
Philip Monk
ba4d3b6d24 [ares][jets] convert remaining jets to _stack functions 2023-02-22 19:34:39 -07:00
Philip Monk
6b2cbf7140 [ares][jets] convert jet to _stack functions 2023-02-22 18:22:40 -07:00
Philip Monk
e06c2f2ac8 [ares] support ibig-rs patch to not allocate on some operations 2023-02-22 18:18:44 -07:00
Philip Monk
b6b2ee3fb3 [ares] assert no allocation during interpret 2023-02-22 18:05:28 -07:00
Edward Amsden
b03f398a69 [ares] [interpreter] wip siglus caching 2023-02-21 13:21:54 -06:00
Edward Amsden
5a885181ea [ares] [wip] add siglus (%memo) cache to treewalking interpreter 2023-02-21 12:52:39 -06:00
Edward Amsden
abfd642868 [ares] [hamt] jam and cue work with mutable hamt 2023-02-21 04:58:53 -06:00
Edward Amsden
e2743e24e7 [ares] [hamt] add mutable hamt for use within a single nockstack frame 2023-02-18 10:39:45 -06:00
Edward Amsden
dce5e74185 [ares][serialization] wip: use HAMT for jam and cue 2023-02-17 22:55:40 -06:00
Philip Monk
ff603d01f6 [ares] add pill to run azimuth events
Also includes various functions changes to allow printing nouns in gdb,
printing direct atoms as ascii when possible, etc.
2023-02-17 18:51:51 -07:00
Edward Amsden
bd44624e63 [ares][stack] make in_frame take a generic pointer 2023-02-17 19:26:28 -06:00
Edward Amsden
9140984333
Merge branch 'status' into eamsden/hamt 2023-02-17 16:28:11 -06:00
Edward Amsden
ec3a17af9c [ares][hamt] shift off 5 bits per level on insert, not 1 2023-02-17 15:15:23 -06:00
Edward Amsden
17ca8e43ad [ares] [hamt] fix bugs in chunk computations 2023-02-17 14:00:31 -06:00
Edward Amsden
c856d2f730 [ares] [hamt] mark bug in comment and reformat 2023-02-16 19:28:30 -06:00
Edward Amsden
4e422efecc [ares] rewrite HAMT entirely, more readable/less raw representation 2023-02-16 19:19:16 -06:00
Edward Amsden
646576dd56 [ares] [wip] hamt and trait-based object preservation on stack pop 2023-02-16 12:46:07 -06:00
Philip Monk
f4be9f30bf [ares] fix the Last Bug in unifying equality
The addition/subtraction is with respect to the polarity we matched on,
but the high and low pointers are with respect to the polarity we're
switching to .  The stack pointer is always at slot 0 (the outer slot)
and the frame pointer is always at slot 1 (the inner slot).
2023-02-16 05:18:58 -07:00
Philip Monk
342d55bafa [ares] fix bug in edit()
Relatively deep edits were producing incorrect results.
2023-02-15 22:41:05 -07:00
Philip Monk
a96ea5ffba [jets] add rip jet 2023-02-14 22:18:02 -07:00
Philip Monk
114e74ec07 [jets] add rep jet 2023-02-14 21:52:19 -07:00
Philip Monk
04d99a9a68 [jets] add can jet 2023-02-14 21:39:25 -07:00
Philip Monk
7f4a411e7e [jets] add cat jet 2023-02-14 21:18:02 -07:00
Philip Monk
50c90381ef [jets] add end jet 2023-02-14 21:02:49 -07:00
Philip Monk
0569a26142 [jets] add mix jet 2023-02-14 20:48:17 -07:00
Philip Monk
9825db95ff [jets] add dis jet 2023-02-14 20:43:25 -07:00
Philip Monk
f5d0bea6ac [jets] add con jet 2023-02-14 20:39:45 -07:00
Philip Monk
8946568a08 [jets] add met jet 2023-02-14 20:15:08 -07:00
Philip Monk
956045a91d [jets] move jets_math under jets 2023-02-14 20:05:42 -07:00
Philip Monk
171da85f6f [jets] add mug test 2023-02-14 16:40:28 -07:00
Philip Monk
331336f56b [jets] add cut test 2023-02-14 16:31:11 -07:00
Philip Monk
2b01a761c6 [jets] add rsh test 2023-02-14 16:24:13 -07:00
Philip Monk
d1d32167ff [jets] add lsh test 2023-02-14 16:19:30 -07:00
Philip Monk
4653e41bd8 [jets] add bex test 2023-02-14 16:02:29 -07:00
Philip Monk
ee9d2c7c3c [jets] add gte test 2023-02-14 15:56:38 -07:00
Philip Monk
dd4621be20 [jets] add gth test 2023-02-14 15:56:13 -07:00
Philip Monk
f54f5171ae [jets] add lte test 2023-02-14 15:55:10 -07:00
Philip Monk
3d022b3f90 [jets] add lth test 2023-02-14 15:54:23 -07:00
Philip Monk
38399d12b0 [jets] add mod test 2023-02-14 15:42:42 -07:00
Philip Monk
fd94db487f [jets] add dvr test 2023-02-14 15:38:59 -07:00
Philip Monk
03df84d67d [jets] add div test 2023-02-14 15:25:27 -07:00
Philip Monk
7533406fa4 [jets] add mul test 2023-02-14 15:20:48 -07:00
Philip Monk
6aa17458d5 [jets] add sub test 2023-02-14 15:10:16 -07:00
Philip Monk
60c32b2ed2 [jets] add 'add' test 2023-02-14 14:57:38 -07:00
Philip Monk
b05a6a7b01 [jets] add testing framework 2023-02-14 14:26:31 -07:00
Philip Monk
dec93b9ed8 [jets] add rsh jet 2023-02-14 13:08:19 -07:00
Philip Monk
bb819abcc2 [ares] fix bug in unifying equality 2023-02-14 13:08:19 -07:00
Philip Monk
89e7d612f8 [jets] add lsh jet
Also implement chop, as in vere
2023-02-14 13:08:19 -07:00
Philip Monk
ccc0306d33 [jets] add bex jet 2023-02-14 13:08:19 -07:00
Philip Monk
39d0cab706 [jets] add gte jet 2023-02-14 13:08:19 -07:00
Philip Monk
9fb605769e [jets] add gth jet 2023-02-14 13:08:19 -07:00
Philip Monk
bbae5bb146 [jets] add lte jet 2023-02-14 13:08:19 -07:00
Philip Monk
3e7df76174 [jets] add lth jet 2023-02-14 13:08:19 -07:00
Philip Monk
8c1f2b668f [jets] add mod jet 2023-02-14 13:08:19 -07:00
Philip Monk
025ce511f0 [jets] add dvr jet 2023-02-14 13:08:19 -07:00
Philip Monk
099ec9243f [jets] add div jet 2023-02-14 13:08:19 -07:00
Philip Monk
f6e5b3898d [jets] add mul jet 2023-02-14 13:08:19 -07:00
Philip Monk
511370d592 [ares] add sub jet 2023-02-14 13:08:19 -07:00
Philip Monk
4c1e742044 [jets] import ubig, add "add" jet 2023-02-14 13:08:19 -07:00
Philip Monk
d39715df31 [jets] add mug jet 2023-02-14 13:08:19 -07:00
Philip Monk
33c4996aef [ares] add test mode to sham jets
Similar to vere, this mode runs both the nock and the jet and compares
the results.
2023-02-14 13:08:19 -07:00
Philip Monk
9f3b4dd781 [ares] allow jets to fail 2023-02-14 13:08:19 -07:00
Edward Amsden
82a08d878e
Merge pull request #24 from urbit/philip/equal
[ares] fix a couple bugs in unifying equality
2023-02-13 20:00:59 -06:00
Philip Monk
43f3622f63 [ares] fix a couple bugs in unifying equality
East/West typo, also we were setting the frame pointer to the stack
pointer while chasing up the stack.

This also refactors the conditionals in a way that I think is easier to
read.  We always have to do both calculations anyway.
2023-02-13 18:46:37 -07:00
Edward Amsden
c68728edf1 [ares] update rust compiler to 1.64 2023-02-13 16:01:50 -06:00
Philip Monk
634680aa24 [ares] copy directly into atom in newt 2023-02-13 11:13:21 -07:00
Philip Monk
fe3c0895b2 [ares] comments and formatting 2023-02-13 10:57:13 -07:00
Philip Monk
ff59ca8ba9 [ares] rename new_tuple -> T, make D const 2023-02-13 10:39:08 -07:00
Philip Monk
dd4dc625bd [ares] harden snapshotting 2023-02-12 18:02:11 -07:00
Philip Monk
f16c194098 [ares] refactor snapshotting
Especially, don't require cueing the snapshot to verify the checksum and
get the event number.
2023-02-12 17:10:26 -07:00
Philip Monk
b9abb0efe8 [ares] extend jam perstistence to use two snapshots 2023-02-12 14:55:05 -07:00
Philip Monk
6d51c8c262 [ares] add simplest possible checkpoints
These checkpoints are just a jam file of your state, with the event
number and a checksum.  If you crash while writing the checkpoint, it
will be corrupt.  Obviously, these snapshots will be slow to write on a
real ship as well.
2023-02-11 23:04:39 -07:00
Philip Monk
51b4735711 [ares] fill out basic lifecycle
With these changes, you can boot the included "baby" pill -- a trivial
pill which requires no jets and prints the text "effect" on every event.
2023-02-11 17:28:14 -07:00
Philip Monk
1d6e4c74b2 [ares] add basic ipc handler 2023-02-11 02:51:59 -07:00
Philip Monk
e4f44d705c [ares] convenient noun constructors 2023-02-11 02:40:49 -07:00
Edward Amsden
683bbaadef
Move contribution guidelines to repository root and link from README 2023-02-05 17:08:02 -06:00
Edward Amsden
10b8166815
Merge branch 'status' into eamsden/CONTRIBUTING 2023-02-03 13:59:03 -06:00
Edward Amsden
716940c83d Add brief CONTRIBUTING.md file 2023-02-03 13:58:27 -06:00
Edward Amsden
5f3e5c1f12 Merge branch 'philip/jets' into i/15/tas-macro 2023-02-03 13:43:47 -06:00
Peter McEvoy
3de42389c1 Use tas!() when computing Nock 11 2023-02-03 12:19:32 -05:00
Philip Monk
7765c020cf [ares] rename %prop->%sham and add comment 2023-02-03 10:19:23 -07:00
Peter McEvoy
83b4fe308a Revert "Sort dependencies alphabetically"
This reverts commit 38fd034984.
2023-02-03 12:15:56 -05:00
Peter McEvoy
27f64b96ea Use tas!() in jets dashboard 2023-02-03 12:12:10 -05:00
Peter McEvoy
f41cf8cc38 Test tas!() 2023-02-03 12:12:08 -05:00
Peter McEvoy
d072c3ecea Implement tas!() in separate crate 2023-02-03 12:11:53 -05:00
Peter McEvoy
38fd034984 Sort dependencies alphabetically 2023-02-03 12:09:56 -05:00
Philip Monk
3e05e54104 Merge branch 'philip/raw' into philip/jets 2023-02-02 21:00:41 -07:00
Philip Monk
336214cd9b [ares] fix atom initialization bug 2023-02-02 20:58:11 -07:00
Edward Amsden
697180606b
Merge pull request #14 from urbit/eamsden/2stackz-fixes
[ares][unifying equality] simplify, document, remove bugs and redundancies
2023-02-02 18:49:37 -06:00
Edward Amsden
3ee28adb93 [ares][unifying equality] add fast pointer and cached mug checks outside the loop 2023-02-02 18:47:53 -06:00
Edward Amsden
4ddcb1e07c
[ares][unifying equality] memcmp for indirect atoms requires bytesize 2023-02-02 18:30:34 -06:00
Philip Monk
ac6103da99 [ares] style fixes 2023-02-02 17:19:45 -07:00
Edward Amsden
4edd3a6fb3
Merge branch 'status' into philip/jets 2023-02-02 13:51:44 -06:00
Edward Amsden
06fe914c34 [ares] simplify unifying equality, remove redundant checks, and better document 2023-02-02 13:37:04 -06:00
Edward Amsden
e04329f2b6 [ares][2stackz] missing pop of work stack when pointer equality is discovered 2023-02-02 12:06:25 -06:00
Philip Monk
23e33cfd11 add note to raw_slot 2023-02-02 10:54:31 -07:00
Philip Monk
69b4bbeeae add naive jet dashboard with two jets 2023-02-01 21:36:37 -07:00
Philip Monk
b88190f119 rename axis->slot to reduce confusion 2023-02-01 21:35:30 -07:00
Philip Monk
d55db12c12 implement Debug trait for nouns 2023-02-01 21:35:07 -07:00
Philip Monk
999e1e29d7 east/west typo 2023-02-01 20:06:49 -07:00
Edward Amsden
b7fac596c3 [ares] get rid of warnings 2023-02-01 18:42:38 -06:00
Edward Amsden
140dcf4e28 [ares] rust formatting 2023-02-01 18:37:48 -06:00
Edward Amsden
4eb99cc2d4 [ares] Some cleanup 2023-02-01 18:36:43 -06:00
Edward Amsden
665a2f5672 [ares] Source code for cue-and-then-jam benchmark 2023-02-01 18:35:05 -06:00
Edward Amsden
fc048c8e8b [ares] Update cargo.lock 2023-02-01 18:34:38 -06:00
Edward Amsden
a5f36ec6d3 [ares]: Cue-and-then-jam the solid pill works and is fast 2023-02-01 18:34:21 -06:00
Edward Amsden
903ffe694c [ares] Add noun acyclicality check 2023-02-01 18:33:42 -06:00
Edward Amsden
dabafb685d [ares/2stackz]: Add comment about split stack frames per Joe 2023-02-01 18:30:05 -06:00
Edward Amsden
d555967563 [ares]: import custom murmur3 and add feature flag for acyclic check 2023-02-01 18:28:47 -06:00
Edward Amsden
223b946199 [ares] comment explaining why unifying equality does not, in fact, infinite loop 2023-01-30 19:27:41 -06:00
Edward Amsden
9d97c2d29f [ares] bugfixes in unifying equality 2023-01-30 19:27:02 -06:00
Philip Monk
6f5e87aa05 add decrement test and make it pass 2023-01-27 13:41:35 -07:00
Edward Amsden
9920fc15af current state for inspection 2023-01-26 18:02:49 -06:00
Edward Amsden
06ae62f6a3
remove needless debug assert 2022-07-16 17:30:52 -05:00
Edward Amsden
7762e97981
For direct atom, return pointer to atom instead of immediately-stale pointer to direct copy 2022-07-16 17:28:54 -05:00
Edward Amsden
d56f081e6e
Rectify IndirectAtom doc comment 2022-07-16 16:08:43 -05:00
Edward Amsden
4a264278a3
format code, add assertion for output equality with file contents 2022-07-16 16:04:18 -05:00
Edward Amsden
c968648d86
Copy output to mmap as bytes 2022-07-16 15:09:34 -05:00
Edward Amsden
0ff0f2f1f2
Remove debugging printfs 2022-07-16 15:09:13 -05:00