Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release vere-v2.10 to live #474

Merged
merged 75 commits into from
Jun 27, 2023
Merged

Release vere-v2.10 to live #474

merged 75 commits into from
Jun 27, 2023

Commits on Feb 13, 2023

  1. u3: adds free-list comment

    ported from urbit/urbit#6108
    joemfb committed Feb 13, 2023
    Configuration menu
    Copy the full SHA
    866e178 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    30678bc View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    84610b3 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    22fc9b2 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    108cae1 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    fe59ac5 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    50ada1f View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    50f4502 View commit details
    Browse the repository at this point in the history
  9. Configuration menu
    Copy the full SHA
    b9fcbb6 View commit details
    Browse the repository at this point in the history

Commits on May 16, 2023

  1. Configuration menu
    Copy the full SHA
    1e145cb View commit details
    Browse the repository at this point in the history

Commits on May 23, 2023

  1. vere: map ephemeral space to file in pier

    See vere#405.
    
    This implements a "roll-your-own swapfile", where we designate a file
    (.urb/ephemeral.bin) to file-back any parts of the loom which are not
    backed by the snapshot.  These are pages in the contiguous free space,
    and pages that have been dirtied since the last snapshot.
    
    With these changes, you should be able to safely reduce the allotted
    memory to a VM running a machine without relying on separate swap space.
    
    The main disadvantages to this approach are:
    - ephemeral.bin is large (the size of the loom).  We could delete it on
      graceful shutdown, or we could make it a sparse file.
    - _ce_flaw_protect has to copy the contents of dirtied pages twice.  I'm
      skeptical that this introduces significant slowness, but it could.
    
    It may be reasonable to put this behavior behind a flag simply because
    of the increased disk requirements.
    philipcmonk committed May 23, 2023
    Configuration menu
    Copy the full SHA
    b111200 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    9b9a510 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    cd3d5cd View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    5d22c38 View commit details
    Browse the repository at this point in the history

Commits on May 30, 2023

  1. Configuration menu
    Copy the full SHA
    72c19a4 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    f9e5419 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    f9ae465 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    c8bfa1a View commit details
    Browse the repository at this point in the history
  5. play: support --no-demand

    joemfb committed May 30, 2023
    Configuration menu
    Copy the full SHA
    25c4ea2 View commit details
    Browse the repository at this point in the history
  6. Revert "Implement simple replay command (#192)"

    This reverts commit 47ba262.
    joemfb committed May 30, 2023
    Configuration menu
    Copy the full SHA
    243aec5 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    4d2c229 View commit details
    Browse the repository at this point in the history

Commits on May 31, 2023

  1. play: handle --loom correctly

    Co-authored-by: Jake Miller <[email protected]>
    joemfb and ryjm committed May 31, 2023
    Configuration menu
    Copy the full SHA
    2c47b18 View commit details
    Browse the repository at this point in the history

Commits on Jun 1, 2023

  1. Configuration menu
    Copy the full SHA
    5468fb2 View commit details
    Browse the repository at this point in the history
  2. vere: refactor _ce_flaw_protect

    per review comments
    philipcmonk committed Jun 1, 2023
    Configuration menu
    Copy the full SHA
    21a1daf View commit details
    Browse the repository at this point in the history

Commits on Jun 2, 2023

  1. Configuration menu
    Copy the full SHA
    b1027bc View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    79d0b18 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    1377616 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    0cc7e56 View commit details
    Browse the repository at this point in the history

Commits on Jun 8, 2023

  1. Configuration menu
    Copy the full SHA
    b7bf616 View commit details
    Browse the repository at this point in the history
  2. Update VERSION to 2.10

    pkova authored Jun 8, 2023
    Configuration menu
    Copy the full SHA
    1ffb3ae View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    d98aac2 View commit details
    Browse the repository at this point in the history

Commits on Jun 12, 2023

  1. play: cleanup review issues

    joemfb committed Jun 12, 2023
    Configuration menu
    Copy the full SHA
    3c40e1b View commit details
    Browse the repository at this point in the history
  2. u3: documents pack/meld return

    joemfb committed Jun 12, 2023
    Configuration menu
    Copy the full SHA
    ef27bb2 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    8b39adc View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    79a5f71 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    52a1d06 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    598040d View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    07927aa View commit details
    Browse the repository at this point in the history

Commits on Jun 14, 2023

  1. fine: loosen path parsing

    philipcmonk committed Jun 14, 2023
    Configuration menu
    Copy the full SHA
    4465aeb View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    8fcee60 View commit details
    Browse the repository at this point in the history
  3. Add jets for min/max.

    sigilante committed Jun 14, 2023
    Configuration menu
    Copy the full SHA
    eef8c75 View commit details
    Browse the repository at this point in the history
  4. Correct macro expansion.

    sigilante committed Jun 14, 2023
    Configuration menu
    Copy the full SHA
    2071be4 View commit details
    Browse the repository at this point in the history
  5. Update max.c

    sigilante authored Jun 14, 2023
    Configuration menu
    Copy the full SHA
    f155698 View commit details
    Browse the repository at this point in the history
  6. Update min.c

    sigilante authored Jun 14, 2023
    Configuration menu
    Copy the full SHA
    fd27ccf View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    f395dd9 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    c98e9ac View commit details
    Browse the repository at this point in the history
  9. Configuration menu
    Copy the full SHA
    d3d60ea View commit details
    Browse the repository at this point in the history

Commits on Jun 15, 2023

  1. u3: enforce a max of one page in south.bin (#458)

    This PR is the simplest available fix for #451.
    belisarius222 authored Jun 15, 2023
    Configuration menu
    Copy the full SHA
    6b0b85f View commit details
    Browse the repository at this point in the history
  2. Add jets for min/max. (#457)

    Resolves #456.
    
    Written live for a tutorial with @belisarius222
    Josh Lehman authored Jun 15, 2023
    Configuration menu
    Copy the full SHA
    d10a4c0 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    877e94b View commit details
    Browse the repository at this point in the history

Commits on Jun 16, 2023

  1. Configuration menu
    Copy the full SHA
    b4ede47 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    59d40a0 View commit details
    Browse the repository at this point in the history

Commits on Jun 19, 2023

  1. play: dedicated event replay, revived (#420)

    This PR ports urbit/urbit#6159, fixing a performance problem that
    plagued previous porting attempts. Fixes #157, supersedes #210 and #413.
    
    The poor performance observed in #210 and elsewhere was not due to any
    issue matching or dispatching jets. It coincided with the switch from
    hoon %140 to %139, but only incidentally. It was caused by a change to
    the `+solid` pill generator, which inadvertently broke the structural
    sharing in the lifecycle sequence (see
    https://github.com/urbit/urbit/pull/5989/files#diff-2f8df9d079ccb58c0a9a9c46f2f7dbd943dabaa21ba658c839de757bbac999f1L108-L116).
    The problem was unnoticed because, in normal (ie, king/serf) boot and
    replay, events are sent over IPC in batches, which had the side effect
    of recovering the necessary structural sharing. This new replay
    implementation does not involve IPC, but instead reads and computes
    events synchronously, in a single process.
    
    The issue did not arise until ships booted from pills created with the
    updated generator were replayed using this new implementation, and that
    happened to coincide with the release of hoon %139. The absence of
    structural shared lead to jets being registered with one copy of the
    kernel, but dispatched from a separate copy, resulting in absurdly
    expensive equality comparisons. Since both copies were already allocated
    on the home-road, unification could not be performed. And since the
    problem manifested during the initial phase (lifecycle sequence) of the
    boot process, `|meld` could not be used.
    
    This PR includes a trivial hack to work around such event logs: the
    lifecycle sequence is read in an inner road, jammed, and then cue'd,
    thus recovering structural sharing before any nock computation, jet
    registration, &c. The solid pill generator should also be fixed, but
    workarounds will still be needed to account for existing piers.
    Longer-term, home-road unification should clearly be explored to avoid
    such fragility.
    joemfb authored Jun 19, 2023
    Configuration menu
    Copy the full SHA
    d27808d View commit details
    Browse the repository at this point in the history

Commits on Jun 20, 2023

  1. fine: Loosen path parsing and bump page size (#454)

    These are the vere changes that accompany urbit/urbit#6669, see that for
    a description.
    joemfb authored Jun 20, 2023
    Configuration menu
    Copy the full SHA
    5804245 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    c9fe4d3 View commit details
    Browse the repository at this point in the history
  3. build: switch gmp source url (#462)

    pkova authored Jun 20, 2023
    Configuration menu
    Copy the full SHA
    aecc140 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    73f335f View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    bcf3b59 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    6ce67c9 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    b1337b6 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    0a79293 View commit details
    Browse the repository at this point in the history
  9. Configuration menu
    Copy the full SHA
    c260dba View commit details
    Browse the repository at this point in the history
  10. Configuration menu
    Copy the full SHA
    869d8b9 View commit details
    Browse the repository at this point in the history
  11. u3: "toss" ephemeral pages after every event (#422)

    Highly relevant to #410 (I think this behavior should be always-on in
    the presence of "swap"), but also likely useful as a standalone option
    for low-memory deployments. This is a draft PR as the behavior is
    hardcoded, not controlled by command-line arguments.
    philipcmonk authored Jun 20, 2023
    Configuration menu
    Copy the full SHA
    8b84d71 View commit details
    Browse the repository at this point in the history
  12. jets: mint -> moot

    philipcmonk committed Jun 20, 2023
    Configuration menu
    Copy the full SHA
    25505af View commit details
    Browse the repository at this point in the history

Commits on Jun 21, 2023

  1. Configuration menu
    Copy the full SHA
    d40acbb View commit details
    Browse the repository at this point in the history
  2. vere: map ephemeral space to file in pier (#410)

    See #405
    
    This implements a "roll-your-own swapfile", where we designate a file
    (.urb/ephemeral.bin) to file-back any parts of the loom which are not
    backed by the snapshot. These are pages in the contiguous free space,
    and pages that have been dirtied since the last snapshot.
    
    With these changes, you should be able to safely reduce the allotted
    memory to a VM running a machine without relying on separate swap space.
    
    The main disadvantages to this approach are:
    - ephemeral.bin is large (the size of the loom). We could delete it on
    graceful shutdown, or we could make it a sparse file.
    - _ce_flaw_protect has to copy the contents of dirtied pages twice. I'm
    skeptical that this introduces significant slowness, but it could.
    
    It may be reasonable to put this behavior behind a flag simply because
    of the increased disk requirements.
    
    I've successfully tested various scenarios in a limited memory
    environment, but this is not well enough tested to be ready for merging.
    Main things I've tested (all on a machine with 1GB RAM and no swap):
    - Boot
    - Allocate 8 128MB atoms in the dojo in a row, verifying |mass is 1.2GB
    afterward
    - Free those atoms, run |pack, recreate them, free them again, |pack
    again
    - Restart ship, recreate those atoms, free them, and |pack
    
    All of this worked fine on that machine, even though the ephemeral
    memory usage must have been greater than the RAM on the machine, and
    there were no swap files. During most of this, the htop-reported
    "resident memory" for the serf process was around 400-600MB, while the
    amount of memory "used" overall per `free -h` was under 180-250MB every
    time I checked. This is consistent with the OS deciding how much of the
    backing files to keep resident at any given time, while the amount of
    memory strictly required stays fairly small.
    
    Testing on a machine with plenty of memory, I didn't notice any
    slowdown. On the 1GB machine, it was somewhat slow to allocate the large
    atoms, but it felt about right considering they must have been written
    to the backing file. Graceful shutdown was somewhat slow sometimes,
    presumably when it needed to copy from the ephemeral file to the
    snapshot.
    Josh Lehman authored Jun 21, 2023
    Configuration menu
    Copy the full SHA
    2a21d8d View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    132dca1 View commit details
    Browse the repository at this point in the history
  4. jets: let +bex create atoms 256MB or more (#464)

    In testing, I commonly use `=a (bex (bex 29))` as a way to use 128MB of
    memory. It's been annoying that you can't do 256MB or more in this way,
    because the +bex jet didn't support it. This PR raises that limit to
    strictly less than 2GB. This also reduces the ephemeral memory usage of
    the `+bex` jet on large numbers by half.
    
    This was limited to strictly less than 256MB because it used a gmp
    method to perform the binary exponent. I briefly looked at whether gmp
    would handle double-length words for the exponent, but decided it was
    simpler and more efficient anyway to write this jet directly, ie
    allocate `a+1` bits and set the `a`th bit. This saves one copy of the
    entire result, and allows it to function up to 2GB minus one.
    
    This function would work correctly above this limit, but there are other
    parts of the system that seem to implicitly assume that atoms cannot be
    2GB or larger. The first one I ran into was `mug`, but there may be
    others; after all, for a long time it was safe to assume nothing could
    be larger than 2GB because that was the loom size.
    belisarius222 authored Jun 21, 2023
    Configuration menu
    Copy the full SHA
    f54d6de View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    7de5422 View commit details
    Browse the repository at this point in the history

Commits on Jun 22, 2023

  1. Configuration menu
    Copy the full SHA
    7f936b7 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    7140a46 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    272bb84 View commit details
    Browse the repository at this point in the history
  4. u3: improve snapshot corruption size checks (#468)

    These checks were introduced in v2.7, aborting the process if the
    snapshot metadata indicated that truncation had occurred. But the check
    as written is unnecessarily strict, and also aborts the process if the
    snapshot was larger than necessary. This PR prints a warning in that
    case and otherwise continues.
    joemfb authored Jun 22, 2023
    Configuration menu
    Copy the full SHA
    9fac623 View commit details
    Browse the repository at this point in the history

Commits on Jun 23, 2023

  1. Configuration menu
    Copy the full SHA
    2b62e1b View commit details
    Browse the repository at this point in the history