1. Sep 03, 2017
  2. Aug 28, 2017
  3. Aug 24, 2017
  4. Aug 22, 2017
    • Matthew Fernandez's avatar
      librumur: suppress some unnecessary warnings in the checker · f2d0ea40
      Matthew Fernandez authored
      It would be nice to get to a point where the checker builds with -W -Wall
      -Wextra in the presence of all sane models.
      f2d0ea40
    • Matthew Fernandez's avatar
      switch to producing a checker in C · 43b9060f
      Matthew Fernandez authored
      This might seem like a bit of an odd direction to go in. However, I've realised
      the advantages we get from C++ in the checker are actually not especially
      significant. The main strengths in code like this are being able to write static
      code ahead of time using templates and then instantiate it during generation.
      However, we need to emit custom classes for almost everything non-trivial (e.g.
      records).
      
      None of the data structures we need are especially complex, except the state set
      and queue which I think we're best outsourcing. My hypothesis is that this
      combination (C source + GLib) can beat a C++ solution, in terms of runtime and
      memory usage. I don't know whether this will pan out, but interesting to try.
      
      One notable thing we lost in this change was exception support. Exceptions were
      shaping up to be quite an elegant mechanism for reporting a checker failure.
      However, my long term plan was always to remove them (or at least make them
      optional) to allow better interoperability with other languages. I think we
      should probably still be able to come up with a performance, thread-safe
      solution.
      43b9060f
  5. Aug 21, 2017
  6. Aug 18, 2017
  7. Aug 17, 2017
    • Matthew Fernandez's avatar
      add issue 'enable -Wshadow' · 60e2b9ac
      Matthew Fernandez authored
      60e2b9ac
    • Matthew Fernandez's avatar
      librumur: enable referencing of quantified variables within forall · 8bd2aa47
      Matthew Fernandez authored
      This works, but it makes me slightly nervous that the Var of a quantified
      variable is only sustained by shared_ptrs of ExprIDs related to where it is
      referenced. I.e. Once we traverse out of parsing the forall expression, the
      enclosing scope is closed and the Var is destroyed if it hasn't been referenced.
      On the one hand, this seems fine and might even help us later in detecting
      useless quantification. On the other hand, the lifetime of this Var object is
      quite slippery.
      8bd2aa47
    • Matthew Fernandez's avatar
      librumur: fix: remove accidentally shadowing field · c89084bd
      Matthew Fernandez authored
      Well that was a rude surprise. VarDecl lookups in the symbol table failed
      mysteriously and debugging indicated they had no name. Some digging revealed we
      were accidentally shadowing Decl::name.
      
      It is pretty surprising to me that -Wall -Wextra does not enable -Wshadow, which
      would have caught this. Unfortunately we can't turn it on right now because it
      sprays warnings about the constructors that shadow class members with their
      arguments. Sigh. I guess I'll have to refactor this before turning it on.
      c89084bd
    • Matthew Fernandez's avatar
      librumur: introduce new Var type · 55fa3302
      Matthew Fernandez authored
      This expression is used for referring to variables (either parts of the state or
      local variables). I'm still not sure this is the natural solution. It feels like
      this and ExprID should be a single class, but we'll see how it goes.
      55fa3302
    • Matthew Fernandez's avatar
      librumur: implement forall expressions · 15208239
      Matthew Fernandez authored
      Note that you can't currently reference the quantified variables within the
      forall expression as explained in the FIXME comment.
      15208239
  8. Aug 14, 2017