Tags: martinbaker/Idris-dev
Tags
New in 1.1.0 Library Updates: + Added `Text.PrettyPrint.WL` an implementation of the Wadler-Leijen Pretty-Print algorithm. Useful for those wishing to pretty print things. + Added `Text.Lexer` and `Text.Parser` to `contrib`. These are small libraries for implementing total lexical analysers and parsers. + New instances: + Added `Catchable` for `ReaderT`, `WriterT`, and `RWST`. + Added `MonadTrans` for `RWST`. + Added utility functions to `Data.SortedMap` and `Data.SortedSet` (`contrib`), most notably `merge`, merging two maps by their `Semigroup` op (`<+>`) + `Prelude.WellFounded` now contains an interface `Sized a` that defines a size mapping from `a` to `Nat`. For example, there is an implementation for lists, where `size = length`. The function `sizeAccessible` then proves well-foundedness of the relation `Smaller x y = LT (size x) (size y)`, which allows us to use strong induction conveniently with any type that implements `Sized`. In practice, this allows us to write functions that recurse not only on direct subterms of their arguments but on any value with a (strictly) smaller `size`. A good example of this idiom at work is `Data.List.Views.splitRec` from `base`. + Added utility lemma `decEqSelfIsYes : decEq x x = Yes Refl` to `Decidable.Equality`. This is primarily useful for proving properties of functions defined with the help of `decEq`. Tool Updates: + New JavaScript code generator that uses an higher level intermediate representation. + Various optimizations of the new JavaScript code generator. + Names are now annotated with their representations over the IDE protocol, which allows IDEs to provide commands that work on special names that don't have syntax, such as case block names.
New in 1.0.1: ============= Library Updates --------------- + Added `Text.PrettyPrint.WL` an implementation of the Wadler-Leijen Pretty-Print algorithm. Useful for those wishing to pretty print things. + Added `Text.Lexer` and `Text.Parser` to `contrib`. These are small libraries for implementing total lexical analysers and parsers. + New instances: + Added `Catchable` for `ReaderT`, `WriterT`, and `RWST`. + Added `MonadTrans` for `RWST`. + Added utility functions to `Data.SortedMap` and `Data.SortedSet` (`contrib`), most notably `merge`, merging two maps by their `Semigroup` op (`<+>`) + `Prelude.WellFounded` now contains an interface `Sized a` that defines a size mapping from `a` to `Nat`. For example, there is an implementation for lists, where `size = length`. The function `sizeAccessible` then proves well-foundedness of the relation `Smaller x y = LT (size x) (size y)`, which allows us to use strong induction conveniently with any type that implements `Sized`. In practice, this allows us to write functions that recurse not only on direct subterms of their arguments but on any value with a (strictly) smaller `size`. A good example of this idiom at work is `Data.List.Views.splitRec` from `base`. + Added utility lemma `decEqSelfIsYes : decEq x x = Yes Refl` to `Decidable.Equality`. This is primarily useful for proving properties of functions defined with the help of `decEq`. Tool Updates ------------ + New JavaScript code generator that uses an higher level intermediate representation. + Various optimizations of the new JavaScript code generator. + Names are now annotated with their representations over the IDE protocol, which allows IDEs to provide commands that work on special names that don't have syntax, such as case block names.
New in 0.99.2 Library Updates + Added `Data.Buffer` to `base`. This allows basic manipulation of mutable buffers of `Bits8`, including reading from and writing to files. Tool Updates + Idris now checks the list of packages specified at the command line against those installed. If there is a mismatch Idris will complain. Miscellaneous Updates + Documentation updates for the new `Control.ST` library + Various stability/efficiency fixes
New in 0.99.1: Language updates * Language pragmas now required for the less stable existing features, in addition to the existing `TypeProviders` and `ErrorReflection`: + `ElabReflection`, which must be enabled to use `%runElab` + `UniquenessTypes`, which must be enabled to use `UniqueType` + `DSLNotation`, which must be enabled to define a `dsl` block + `FirstClassReflection`, which must be enabled to define a `%reflection` function * New language extension `LinearTypes`: + This allows adding a /multiplicity/ to a binder which says how often it is allowed to be used; either 0 or 1 (if unstated, multiplicity is "many") + The typing rules follow Conor McBride's paper "I Got Plenty o' Nuttin'" + This is highly experimental, unfinished, not at all polished. and there are still lots of details to sort out. Some features don't quite work properly yet. But it is there to play with for the brave! Tool Updates + Idris' output has been updated to more accurately reflect its progress through the compiler i.e. Type Checking; Totality Checking; IBC Generation; Compiling; and Code Generation. To control the loudness of the reporting three verbosity levels are introduced: `--V0`, `--V1`, and `--V2`. The old aliases of `-V` and `--verbose` persist. + New REPL command `:!` that runs an external shell command. + The REPL now colourises output on MinTTY consoles (e.g., Cygwin and MSYS) on Windows, which previously did not occur due to a bug. + Idris now runs in a UTF-8-compatible codepage on Windows. This fixes many Unicode-rendering issues on Windows (e.g., error messages stating `commitBuffer: invalid argument (invalid character)`). + Idris now has a `--warnipkg` flag to enable auditing of Idris packages during build time. Currently auditing check's the list of modules specified in the `iPKG` file with those presented in the package directory. Library Updates + Terminating programs has been improved with more appropriate functions (`exitWith`, `exitFailure`, and `exitSuccess`) and a data structure (`ExitCode`) to capture a program's return code. + Casting a `String` to an `Int`, `Integer` or a `Double` now ignores leading and trailing whitespace. Previously only leading whitespace was ignored. + RTS functions `openFile`, `do_popen`, and `ARGV` are now properly encoded using UTF-8 on Windows.
* `record` syntax now allows updating fields, including nested fields, by applying a function using the `$=` operator. For example: ```idris record Score where constructor MkScore correct : Nat attempted : Nat record GameState where constructor MkGameState score : Score difficulty : Nat correct : GameState -> GameState correct st = record { score->correct $= (+1), score->attempted $= (+1) } st ``` * Implicit parameter to interfaces are now allowed. For example: ```idris interface Shows (ts : Vect k Type) where shows : HVect ts -> Vect k String ``` In this interface, `k` is an implicit parameter, but previously needed to be explicit * The File Effect has been updated to take into account changes in `Prelude.File` and to provide a 'better' API. * `natEnumFromThen` and `natEnumFromTo` have been updated to correctly calculate reverse ranges. Range syntax `[a,b..c]` now can be used again to generate reverse ranges. * `divBN` and `modBN` now can only be used for unsigned numbers. * `return`, which has been an alias for `pure` for many releases, is now deprecated. * Replace instance with implementation: + `InstanceN` is deprecated, use `ImplementationN` instead. + `InstanceCtorN` is deprecated, use `ImplementationCtorN` instead. + `addInstance` is deprecated, use `addImplementation` instead. + `%instance` keyword is deprecated, use `%implementation` instead. * Idris packages are now installed within a sub-directory `libs` of Idris' data directory, before they were installed in the directory's root. * Idris' documentation system now displays the documentation for auto implicits in the output of `:doc`. This is tested for in `docs005`. * New command line flag `--info` that displays information about the installation. * New command line flag `--sourcepath <dir>` that allows adding directories to the source search path. * Allow 'installation' of a package's IdrisDoc documentation into a central location. The default location is the subdirectory `docs` of Idris' data directory. * New flag `--installdoc <ipkg>` provided to install documentation * New flag `--docdir` provided to show default documentation installation location. * New environment variable `IDRIS_DOC_PATH` to allow specification of an alternative installation path for documentation. * Semantic meaning behind several environment variables has been clarified in documentation and code. See compilation section of the reference manual for more details. * Interface parameter constraints are now printed in the output of `:doc`. This is tested for in `docs006`. * New, faster, better, implementation of the coverage checker * The test suite now uses [tasty-golden](https://hackage.haskell.org/package/tasty-golden). New tests must be registered in `test/TestData.hs`, as explained in the relevant `README.md`. * Added OSX and Windows continous integration with Travis and Appveyor. * The :e command can now handle an $EDITOR with arguments in it, like "emacs -nw"
PreviousNext