| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2017-11-10 | Fixed ocaml backend so it correctly compiles registers passed by name. | Alasdair Armstrong | |
| Added a test case for this behavior | |||
| 2017-11-10 | Fixed some tricky typechecking bugs | Alasdair Armstrong | |
| 2017-11-08 | Allow functions to be selectively declared external only for some backends | Thomas Bauereiss | |
| For example, val test = { ocaml: "test_ocaml" } : unit -> unit will only be external for OCaml. For other backends, it will have to be defined. | |||
| 2017-11-08 | Merge branch 'experiments' of https://bitbucket.org/Peter_Sewell/sail into ↵ | Alasdair Armstrong | |
| experiments | |||
| 2017-11-08 | Allow for different extern names for different backends | Alasdair Armstrong | |
| For example: val test = { ocaml: "test_ocaml", lem: "test_lem" } : unit -> unit val main : unit -> unit function main () = { test (); } for a backend not explicitly provided, the extern name would be simply "test" in this case, i.e. the string version of the id. Also fixed some bugs in the ocaml backend. | |||
| 2017-11-07 | Fix typo in constraint rewriter | Thomas Bauereiss | |
| 2017-11-07 | Add builtin for reversing endianness | Thomas Bauereiss | |
| 2017-11-07 | Declare prelude functions as extern | Thomas Bauereiss | |
| Also, rename a few functions for uniformity, e.g. bool_and -> and_bool | |||
| 2017-11-07 | Fix vector_subrange typo | Brian Campbell | |
| 2017-11-03 | Fix ocaml test suite | Alasdair Armstrong | |
| 2017-11-03 | Merge branch 'experiments' of https://bitbucket.org/Peter_Sewell/sail into ↵ | Alasdair Armstrong | |
| experiments | |||
| 2017-11-03 | Fixed a bug where true and false get mixed up in rewriter | Alasdair Armstrong | |
| 2017-11-03 | Fix a bug where sail would throw an exception with empty file list | Alasdair Armstrong | |
| 2017-11-03 | Make sure simple parameter sizes appear in Lem mwords output | Brian Campbell | |
| 2017-11-03 | Make nexp_simp a little smarter | Brian Campbell | |
| 2017-11-02 | Added monomorphism restriction to undefined values. | Alasdair Armstrong | |
| What does this mean? Basically undefined values can't be created for types that contain free type variables, so for example: undefined : list(int) is good, but undefined : list('a) is bad. The reason we want to do this is because we can't compile them away statically, and this leads to situations where type-checkable code fails in the rewriter and gives horribly confusing error messages that don't relate to code the user wrote at all. As an example the following used to typecheck, but fail in the rewriter with a confusing error message, whereas now the typechecker should reject all cases which would trigger that failure in rewriting. val test : forall ('a:Type). list('a) -> unit effect {wreg, undef} function test xs = { xs_mut = xs; xs_mut = undefined; (* We don't know what kind of undefined 'a is *) () } There's a slight hitch, namely that in the undefined_type functions created by the -undefined_gen option, we do want to allow functions that have polymorphic undefined values, so that we can generate undefined generators for polymorphic datatypes such as: union option ('a:Type) = { Some : 'a, None } These functions are always have a specific form that allows the rewriter to succesfully remove the polymorphic undefined value for the 'a argument for Sone. As such there's a flag in the typechecking environment for polymorphic undefineds that is enabled when it sees a function with the undefined_ name prefix. Also: Fixed some test cases that were broken due to escape effect being added to assert. | |||
| 2017-11-02 | Merge branch 'experiments' | Thomas Bauereiss | |
| 2017-11-02 | Fix a few AST and parsing-related bugs | Thomas Bauereiss | |
| 2017-11-02 | Optionally generate an initial register state for the sequential Lem shallow ↵ | Thomas Bauereiss | |
| embedding Checks for command-line flag -undefined_gen and uses the undefined value generator functions of the form undefined_typ to initialise registers | |||
| 2017-11-02 | Fix translation of repeat-until loops to Lem | Thomas Bauereiss | |
| 2017-11-02 | Handle "undefined" type-level sizes in monomorphisation | Brian Campbell | |
| 2017-11-01 | Support bitvector-size-parametric functions in Lem output | Brian Campbell | |
| Translates atom('n) types into itself('n) types that won't be erased Also exports more rewriting functions | |||
| 2017-11-01 | Fix some missing nexp simplification in Lem output | Brian Campbell | |
| 2017-10-31 | Fixed wrong image for List-remove.svg | Alasdair Armstrong | |
| 2017-10-31 | Added trace viewer application for traces produced by sail -ocaml_trace | Alasdair Armstrong | |
| See README file for how to set up and use | |||
| 2017-10-31 | Improvements to register read tracing in ocaml backend | Alasdair Armstrong | |
| 2017-10-31 | Pretty-print Sail assertions in Lem | Thomas Bauereiss | |
| Map to calls to monadic function assert_exp that throws an exception if the assertion is false | |||
| 2017-10-31 | Fix bug in topological sorting of val-specs | Thomas Bauereiss | |
| Put them before the function they declare | |||
| 2017-10-31 | Remove redundant nexp simplification function | Thomas Bauereiss | |
| 2017-10-27 | Fixed some ocaml backend related bugs | Alasdair Armstrong | |
| 2017-10-26 | Merge branch 'experiments' of https://bitbucket.org/Peter_Sewell/sail into ↵ | Alasdair Armstrong | |
| experiments | |||
| 2017-10-26 | Unfold nexp abbreviations for pretty-printing | Thomas Bauereiss | |
| 2017-10-26 | Update val specs after rewriting functions | Thomas Bauereiss | |
| 2017-10-26 | Experiment with pretty-printing non-atomic nexps in Lem | Thomas Bauereiss | |
| 2017-10-26 | Updated ocaml backend so tracing instrumentation is optional. | Alasdair Armstrong | |
| Cleaned up the option list in sail.ml | |||
| 2017-10-25 | Allow mutually recursive functions | Thomas Bauereiss | |
| 2017-10-25 | Point sail/src makefile at ott file in language/ | Alasdair Armstrong | |
| 2017-10-25 | List.cons is too new | Brian Campbell | |
| 2017-10-25 | Merge branch 'experiments' into mono-experiments | Brian Campbell | |
| 2017-10-25 | Generate ast.ml from ott file and update makefile. | Alasdair Armstrong | |
| Fix until loop not being counted as sugar | |||
| 2017-10-25 | Merge branch 'experiments' into mono-experiments | Brian Campbell | |
| 2017-10-25 | Alternative low-memory version of barrier_kindCompare | Brian Campbell | |
| 2017-10-25 | Avoid name clash in generated Lem | Brian Campbell | |
| (complains due to added val spec) | |||
| 2017-10-24 | Make nexp simplifier handle recursion properly | Brian Campbell | |
| 2017-10-24 | More succinct syntax in new parser for externed valspecs which share | Alasdair Armstrong | |
| the same name between sail and the target | |||
| 2017-10-24 | Print type annotations in Lem with type variables | Brian Campbell | |
| (includes variables for bitvector sizes) | |||
| 2017-10-24 | Limit quantifiers printed in Lem to type variables that actually | Brian Campbell | |
| appear in the output | |||
| 2017-10-24 | Handle existential types in Lem backend by stripping them and | Brian Campbell | |
| checking that the type variables visible in the output aren't existential | |||
| 2017-10-24 | Generate undefined_bitvector function when targeting machine words | Brian Campbell | |
| 2017-10-24 | Produce debug message when an expression can't be converted to a constraint | Brian Campbell | |
