1. May 17, 2020
  2. May 15, 2020
  3. May 14, 2020
  4. May 13, 2020
    • Matthew Fernandez's avatar
      introduce some debugging messages in Rumur · 7f525322
      Matthew Fernandez authored
      This is helpful when debugging internal failures during particular parsing
      stages.
      7f525322
    • Matthew Fernandez's avatar
      implement new synthetic AmbiguousAmp node · 10637bd7
      Matthew Fernandez authored
      This new AST node is designed to represent a 'x & y' expression before we have
      decided whether it is a logical AND or a bitwise AND. The intention here is to
      move towards a situation where we can overload this operator to mean either.
      This should be achievable as we have a stronger type system than C, so we should
      be able to come up with precise types for both operands.
      
      Github: related to #37 "extended operator support"
      10637bd7
    • Matthew Fernandez's avatar
      murphi2xml: re-index the model prior to symbol resolution · 2871b634
      Matthew Fernandez authored
      Technically you can get away without re-indexing the model and still running
      symbol resolution. However, the unique identifiers will be all screwed up after
      this and certain analyses on the AST won't work (e.g. checking whether a
      function is pure). The XML generator doesn't rely on any of this functionality
      but it seems safer to re-index anyway in case we add functionality in future
      that does depend on this.
      2871b634
  5. May 12, 2020
    • Matthew Fernandez's avatar
      add some test cases for >> · 5355e88b
      Matthew Fernandez authored
      Github: related to #37 "extended operator support"
      5355e88b
    • Matthew Fernandez's avatar
      implement right shift operator · c43c6679
      Matthew Fernandez authored
      Github: related to #37 "extended operator support"
      c43c6679
    • Matthew Fernandez's avatar
      fix: tweak lshift and rshift to more accurate semantics · 69347e14
      Matthew Fernandez authored
      This addresses a number of incorrect or confusing things:
      
        * A left shift or right shift greater than ULONG_MAX no longer produces 0 when
          constant folded at generation time. This scenario cannot really occur due to
          practical reasons, but we may as well make the code logically consistent (or
          future proof).
        * Fix of a missing initialisation of mpz_t values that would cause crashes
          when constant folding.
        * Right shift, during both constant folding and runtime, is now a
          straightforward arithmetic right shift. This is intuitive for everything
          except shifting a negative value. We assume that users doing this know what
          they're doing and have thought through the consequences.
      
      Github: related to #37 "extended operator support"
      69347e14
    • Matthew Fernandez's avatar
    • Matthew Fernandez's avatar
      add some << test cases · a41f6aed
      Matthew Fernandez authored
      Github: related to #37 "extended operator support"
      a41f6aed
  6. May 11, 2020
    • Matthew Fernandez's avatar
      first cut at << implementation · 392807c9
      Matthew Fernandez authored
      Github: related to #37 "extended operator support"
      392807c9
    • Matthew Fernandez's avatar
      remove ignored parameter in murphi2murphi printer · 0eba3f82
      Matthew Fernandez authored
      I can only assume this was copied as-is from the murphi2xml printer. It makes no
      sense to carry around this string that was being ignored.
      0eba3f82
    • Matthew Fernandez's avatar
      remove some unnecessary static_casts · 46b6ab0d
      Matthew Fernandez authored
      46b6ab0d
    • Matthew Fernandez's avatar
      increase CI fuzzing time to 40min · bbefe673
      Matthew Fernandez authored
      The Travis timeout is 50min and the pre-fuzzing setup typically only takes
      ~2min. Additionally this is build is usually done while we're still waiting on
      the macOS builds to complete, so it's not a limiting factor on CI completion. So
      we may as well bump fuzzing time by an extra 10min.
      bbefe673
    • Matthew Fernandez's avatar
      implement type() on BooleanBinaryExpr instead of its children · b4f1cc6a
      Matthew Fernandez authored
      Similar to ArithmeticBinaryExpr, we were providing an identical implementation
      of type() for each one of its children. It's unclear what the motivation for
      this was as these do -- and always have -- return a boolean uniformly.
      b4f1cc6a
    • Matthew Fernandez's avatar
      move zebra puzzle to misc/ · 99e44d16
      Matthew Fernandez authored
      This doesn't really test any Rumur behaviour, but was rather written as an
      experiment in expressivity. I don't think it will ever make sense to enable this
      in the regular test suite, so it may as well live in misc/ as an example
      instead.
      99e44d16
    • Matthew Fernandez's avatar
      implement type() on ArithmeticBinaryExpr instead of its children · caf93114
      Matthew Fernandez authored
      I think these individual implementations of ::type() must have been a hangover
      from when we tried to get precise about Range types yielded from such
      expressions. Now that we treat the result of any arithmetic operation as the
      unbounded range type, these implementations are all identical and there was no
      point to duplicating them.
      caf93114
    • Matthew Fernandez's avatar
      introduce wrappers for upcoming << and >> support · 3ccd18d1
      Matthew Fernandez authored
      Github: related to #37 "extended operator support"
      3ccd18d1
    • Matthew Fernandez's avatar
      skip progress output if another thread is printing · 4d47d9a9
      Matthew Fernandez authored
      With a large number of threads, progress output becomes increasing spammy and
      contention on the print lock can begin to degrade runtime. Since progress output
      itself is non-critical, simply suppress it when the print lock is held by
      another thread.
      
      It's no longer relevant to experiment with replacing this with a spinlock. Some
      cursory experiments indicated this did not affect performance on mid-size
      machines. On large machines a spinlock is likely to perform worse than a pthread
      mutex, that we expect has already been optimised for large machine scenarios.
      
      Github: closes #160 "replace print mutex with a spinlock?"
      4d47d9a9
    • Matthew Fernandez's avatar
      add sudoku exercise · deac79f5
      Matthew Fernandez authored
      deac79f5
  7. May 10, 2020