Commit Graph

347 Commits

Author SHA1 Message Date
Alex Shelkovnykov
ff2650cf3a hoon: add +roll 2023-09-05 22:48:31 -06:00
Alex Shelkovnykov
304f399595 hoon: add +fe 2023-09-05 22:48:31 -06:00
Alex Shelkovnykov
b6b69b3334 hoon: add +mole 2023-09-05 22:48:31 -06:00
Alex Shelkovnykov
b5532abe92 hoon: add +mure 2023-09-05 22:48:31 -06:00
Alex Shelkovnykov
475143b4d4 hoon: add +mink 2023-09-05 22:48:31 -06:00
Alex Shelkovnykov
c6d5a2656d hoon: add +turn 2023-09-05 22:48:31 -06:00
Alex Shelkovnykov
2833fe1878 hoon: add +weld 2023-09-05 22:48:31 -06:00
Alex Shelkovnykov
b85f5f5c97 hoon: add +homo 2023-09-05 22:48:31 -06:00
Alex Shelkovnykov
85d9c03407 hoon: add +crip 2023-09-05 22:48:31 -06:00
Alex Shelkovnykov
9871b05851 hoon: add types used by virtualization 2023-09-05 22:48:31 -06:00
Alex Shelkovnykov
33d781beb9 hoon: remove sham hints for missing jets 2023-09-05 22:48:31 -06:00
Alex Shelkovnykov
49935059b7 hoon: add +rev 2023-09-05 22:48:31 -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
866f3dae3d test: add new scaffolding for advanced pills 2023-09-01 17:59:42 -06:00
Alex Shelkovnykov
104fffca96 noun: move slot lookup into noun crate 2023-09-01 16:12:27 -06:00
Alex Shelkovnykov
6bfd63e8e5 test: add comments to test scaffolding files 2023-09-01 16:11:30 -06: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
Edward Amsden
08690675f1
Merge pull request #60 from urbit/jon/stack-split-mem-rewrite
split stack
2023-08-11 16:59:45 -05:00
Jonathan Paprocki
b84661331e Merge branch 'status' into jon/stack-split-mem-rewrite 2023-08-11 13:05:29 -04: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
Edward Amsden
afcd420252
Merge pull request #68 from urbit/jon/murmur3-commit
cargo: murmur3 target specific commit
2023-08-10 16:14:46 -05:00
Jonathan Paprocki
e2b16e3ed9 cargo, mug: murmur3 nocopy->of_slice
targets a specific commit to avoid cache issues
2023-08-10 15:16:01 -04:00
Edward Amsden
e7fc8f3d06
Merge pull request #67 from urbit/jon/vere-pill
docs: run a pill with Ares as serf
2023-08-10 07:31:27 -05:00
Jonathan Paprocki
8915890849 docs: urbit -> ares-urbit for special vere 2023-08-09 10:33:48 -04:00
Jonathan Paprocki
d9f0d7b6d2 docs: pills.md wording 2023-08-07 20:10:48 -04:00
Jonathan Paprocki
d757482b40 docs: run a pill with Ares as serf 2023-08-07 16:59:57 -04:00
Jonathan Paprocki
5ccbb8cb70
Merge pull request #65 from urbit/jon/noun-rep-colors
docs: deuteranomaly-friendly noun rep colors
2023-07-26 14:34:07 -04:00
Jonathan Paprocki
83e7f458fc docs: deuteranomaly-friendly noun rep colors 2023-07-24 16:25:11 -04:00
Edward Amsden
b7579dcf3f
Merge pull request #62 from urbit/jon/noun-rep-docs
docs: corrects docs on noun representation
2023-06-22 23:00:49 -05:00
Edward Amsden
bf371242c1
Merge pull request #61 from urbit/jon/noun-rep-svg
docs: add noun rep svg
2023-06-22 23:00:21 -05:00
Jonathan Paprocki
a894f1e3e2 docs: forwarding pointer tag 2023-06-22 16:24:26 -04:00
Jonathan Paprocki
85b45d977f docs: corrects docs on noun representation 2023-06-22 16:22:34 -04:00
Jonathan Paprocki
3f8b90885d docs: add noun rep svg 2023-06-22 16:17:14 -04:00