1. 27 Feb, 2020 2 commits
    • Eric Myhre's avatar
      Yank TypedNode interface into schema package. · a2ea4706
      Eric Myhre authored
      Previously it was in the 'impl/typed' package, next to the
      runtime-wrapper implementation of the interface.  This was strange.
      
      Not only should those two things be separated just on principle,
      this was also causing more import cycle problems down the road:
      for example, the traversal package needs to consider the *interface*
      for a schema-typed node in order to gracefully handle some features...
      and if this also brings in a *concrete* dependency on the
      runtime-wrapper implementation of typed nodes, not only is that
      incorrect bloat, it becomes a show stopper because (currently, at
      least) that implementation also in turn transitively imports the
      ipldfree package for some of its scalars.  Ouchouch.
      
      So.  Now the interface lives over in the 'schema' package, with all
      the other interfaces for that feature set.  Where it probably always
      should have been.
      
      ('typed.Maybe' also became known as 'schema.Maybe', which... does not
      roll off the tongue as nicely.  But this is a minor concern and we
      might reconsider the naming and appearance of that thing later anyway.)
      a2ea4706
    • Eric Myhre's avatar
      Start new 'corpus' package for tests. · c0cd2769
      Eric Myhre authored
      Getting *enough* and sufficiently *organized* corpuses becomes a
      legitimate challenge.
      
      The docs outline some of the directions this will go while describing
      the naming convention.
      
      This naming convention has already been cropping up in an ad-hoc way in
      recent commits; this is a step towards documenting it consistently.
      
      There aren't many entries yet; expect it to grow.
      
      Using JSON as the defacto format is a little aggressive, perhaps,
      because it makes sort of a wide dependency span.
      But since we've already long had unmarshalling of json working,
      it seems viable in practice.
      And it means we get the marshalling output target corpuses for free
      for at least one of our formats.
      And it means we can readily make comparisons to stdlib json,
      which is nice for having baselines to frame comparisons against.
      It also has the interesting sideeffect of making these corpuses
      immune to change in the face of refactors to NodeBuilder (which
      will be an absurd concern at any time except... right now).
      (We'll see.  Maybe I'll regret this after some time passes.  But if so,
      this content probably just pivots to being still useful in json
      marshal and unmarshal tests.)
      
      I'd like to put this to work in writing more traversal benchmarks...
      but that's going to have to wait a few commits, because I've found some
      import cycles that get very problematic when I try to proceed there,
      and it looks like they might take a few steps to sort out.
      c0cd2769
  2. 22 Jan, 2020 1 commit
    • Eric Myhre's avatar
      Entersen some test and benchmark setup. · ffc140e7
      Eric Myhre authored
      I'm wary as heck at introducing any amount of abstraction in
      benchmarks, because sometimes, it starts to foment lies in the
      most unexpected ways.  However, I did several fairly long runs
      with and without this contraction, and they seem to vary on the
      order of single nanoseconds -- while the noise between test runs
      varies by a few dozen.  So, this appears to be safe to move on.
      ffc140e7
  3. 24 Oct, 2019 1 commit