Releases: granule-project/granule
v0.9.6.0
- Graded uniqueness for borrowing and lifetimes as described in our OOPSLA 2024 paper: https://dl.acm.org/doi/10.1145/3649848. Examples in:
- examples/parallelWithMutation.gr
- examples/simple-clone.gr
- This comes with a new graded uniqueness interface https://granule-project.github.io/docs/modules/Primitives.html#uniquenessmodality
- A new set of mutable array primitives https://granule-project.github.io/docs/modules/Primitives.html#mutablearrayoperations and mutable reference cells https://granule-project.github.io/docs/modules/Primitives.html#uniquenessmodality
v0.9.5.0
-
Rank N typing (see https://github.com/granule-project/granule/blob/dev-minor/examples/rankN.gr)
-
Algebraic effects and handlers. See e.g.,
-
Updated standard docs
-
Fixes to deriving copyShape and drop combinators
-
push deriving combinators now have Pushable constraint, e.g.
pushList : forall {s : Semiring, r : s, a : Type} . {(1 : s) <= r, Pushable r} => (List a) [r] -> List (a [r]) pushList = push @List
-
Minor tweaks to the Granule Language Server to improve vscode interaction (no longer complains on the entire file about 'Premature end of file' whilst typing).
ESOP2024 Artefact
Granule used to build the ESOP 2024 synthesis artefact
v0.9.5.0-rc
0.9.5.0
- Adds explicit rankN types in the style of System F (see examples/rankN.gr)
- Given the above, adds the (long awaited) algebraic effects and handlers implementation (see examples/effects_state.gr and examples/effects_nondet.gr) and see -- https://granule-project.github.io/docs/modules/Primitives.html#algebraiceffectsandhandlers
v0.9.4.0
- Advanced synthesis algorithm for
language GradeBase
mode. - Better standard library documentation
- Ability to expose the 'hsup' constraint (see
push
) - Some bug fixes (see https://github.com/granule-project/granule/milestone/2?closed=1)
v0.9.3.0
0.9.3.0
- Existential types, e.g.,
exists {x : Type} . t
, seeexamples/existential.gr
andexamples/listToVec.gr
language GradedBase
extension, seeexamples/graded-base.gr
- Various internal refactorings
- Bug fixes related to indexed types
- Uniqueness features renamed (see
examples/uniqueness.gr
) - Granule docs's feature
gr --grdoc file.gr
will generate documentation indocs/index.html
- New
Cartesian
semiring, with just one elementAny : Cartesian
for completely erasing grading (trivial solving)
v0.9.1.0
0.9.0.1
- Bug fixes to pretty printer and lexer
- forkNonLinear can only work over semirings with exact equality for soundness
- Tweaks to the way type-level float equality works
- Fix to differentially-private floats primitives
- Bumps GHC dependency to 9.0.2
- A few additions to the standard library and primitives (includes
moveString
to make string value unrestricted).
v0.9.0.0
-
Major features:
- Uniqueness modality and mutable arrays
- Session types with non-linear behaviours
- Granule -> Haskell compiler (grc)
- language-server protocol
-
New graded modalities / improvements
-
LNL semiring (Zero, One, Many) recovers linear logic via new
hsup
operation
to control 'push' behaviour on tensors. See: https://hal-lirmm.ccsd.cnrs.fr/TLLA2021/lirmm-03271465 -
Any semiring can now be lifted to a top-completed semiring with Ext (previously only allowed for Nat)
-
-
Language extensions and pragmas: See: https://github.com/granule-project/granule/wiki/Language-Extensions
- Includes CBN interpreter as an option
-
Bug fixes:
- Bug fixes related to sensitivity analysis
- Bug fixes relating to derived operation copyShape
- Improved interpreter
-
Tons of minor improvements
- Error messages are sometimes more intuitive
- Various additional primitives
v0.8.1.0 (minor release)
0.8.1.0
- New semirings:
Sec
andSet t
for some typet
(andSetOp t
) - Bug fixes related to session types
- Some more type aliases added
- Generic deriving coverage improved (especially with
drop
)