Commit Graph

420 Commits

Author SHA1 Message Date
Jonathan Paprocki
6c82f61edc mem: add reset() for NockStack 2023-10-13 10:57:42 -04:00
Alex Shelkovnykov
13f110241c Merge branch 'status' into mink-scry 2023-10-13 08:53:36 -06:00
Matthew LeVan
cceba78d94 jets: cleanup lth and dor 2023-10-12 07:32:31 -04:00
Alex Shelkovnykov
c32b8654d1 fix linter complaints 2023-10-10 21:54:51 -06:00
Alex Shelkovnykov
cf6427ebd9 Add debug assertions from NockStack investigation 2023-10-10 21:45:45 -06:00
Alex Shelkovnykov
59f193900c add handler in +mook for %hunk hint 2023-10-10 21:45:13 -06:00
Alex Shelkovnykov
7082393d8d add nock 12 to interpreter 2023-10-10 21:45:13 -06:00
Matthew LeVan
760e20e844 noun: fix DirectAtom::as_bytes() 2023-10-10 13:45:11 -04:00
Matthew LeVan
6ebc6a2ffa jets: rename order to sort 2023-10-09 09:48:25 -04:00
Matthew LeVan
afbd650751 jets: address @ashelkovnykov's comments #1 2023-10-09 09:45:54 -04:00
Alex Shelkovnykov
b21828ecc5 add a context object to simplify passing function arguments 2023-10-06 18:26:37 -06:00
Matthew LeVan
995ae4c903 jets: fix dor 2023-10-06 08:18:16 -04:00
Matthew LeVan
ddeac1d774 jets: add dor, mor, gor 2023-10-05 16:25:31 -04:00
Alex Shelkovnykov
6bbd114d78 add style convention comment to Cargo.toml 2023-10-05 13:02:27 -06:00
Alex Shelkovnykov
2ad506de2c wrap allocation in panic with permit_alloc 2023-10-05 13:02:14 -06:00
Alex Shelkovnykov
df67782978
Update rust/ares/src/serf.rs
Accepting typo feedback from Ed

Co-authored-by: Edward Amsden <edward@blackriversoft.com>
2023-10-05 12:54:52 -06:00
Alex Shelkovnykov
d9bd4d7716 clean up toddler pill 2023-10-04 13:38:16 -06:00
Alex Shelkovnykov
6d414e994a add check for null pointers in frame_pop 2023-10-04 13:37:18 -06:00
Alex Shelkovnykov
65bd2f19a4 increase size of Ares serf 2023-10-04 13:36:32 -06:00
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
Alex Shelkovnykov
ee7f768661 Merge branch 'status' into trace 2023-10-04 09:03:12 -06: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
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
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
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
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