* [Caml-list] [ANN] utop 2.0.0
@ 2017-05-29 11:15 Jeremie Dimino
0 siblings, 0 replies; only message in thread
From: Jeremie Dimino @ 2017-05-29 11:15 UTC (permalink / raw)
To: caml-list
Hi,
I'm happy to announce the release of utop 2.0.0. This release contains
several useful features contributed by users. The bump in major
version reflects the fact that support for camlp4 was dropped in this
release. Moreover utop no longer supports OCaml versions older than
4.02.3.
I thank all the contributors that participated in this release by
submitting patches to utop and lambda-term:
- Andrea Richiardi
- Andrew Ray
- Christopher Mcalpine
- Deokhwan Kim
- Fabian Bonk
- Fabian Hemmer
- Leonid Rozenberg
- Léon van Velzen
- github user zhenya1007
New features
------------
Here is the list of new features available in utop 2.0.0:
* Add `-implicit-bindings` option to automatically bind expressions to names
`_0`, `_1` and so on. For example, `3 + 4;;` becomes `let _0 = 3 + 4;;`
(#161, #193, Fabian Hemmer)
* Add tab completion for `#mod_use` (#181, Leonid Rozenberg)
* Mention `#help` in `#utop_help` (#190, Fabian Hemmer)
* Add `#utop_stash` and `#utop_save` to save the session to a file
(#169, #199, Christopher Mcalpine and Fabian Hemmer)
* Add support for reason in the Emacs mode (#206, Andrea Richiardi)
And the rest of the changes:
* Fix a bug where utop wouldn't apply ppx rewriters when running in
emacs (Bug report: #192, fix: #202, Deokhwan Kim)
* Refactor the use of hooks to support the various OCaml Emacs mode
(#201, Andrea Richiardi)
* Drop support for camlp4/camlp5
* Drop support for OCaml <= 4.01
* Switch the build system to jbuilder
* Resurect `UTop_main.interact`
Additionally, some new features come from changes in
lambda-term. Following is the changelog for lambda-term 1.11 which was
released recently:
* Add history-search-prev and history-search-next (#47, Fabian Hemmer)
* Allow frame widgets to be labeled (#36, Andrew Ray)
* Add an alignment setting to label widgets (#36, Andrew Ray)
* Add scrollbar widgets (#33, Andrew Ray)
* Improve the `lambda-term-inputrc.5` man page (#41, Léon van Velzen)
* Allow editor widgets to request a specific size and add a "double
editor" example (#42, Fabian Bonk)
* Add `^` to the list of characters recognized in inputrc files (#46,
github user zhenya1007)
* Switch the build to jbuilder
* Drop compatibility with 4.01
Status and future of utop
-------------------------
I started utop about 8 years ago, initially distributed with lwt as
the lwt toplevel. I still regularly receive bug reports and patches
for utop and see it mentioned there and there, so I'm assuming it is
used by a substantial number of people.
Nowaways I only review pull requests and do releases but no longer do
new development myself. I would like to eventually stop working on
utop, but given that it has users I'm looking for someone to take over
the project. So if that's of interest to you, please let me know!
Note that taking charge of utop doesn't mean only doing maintainance
work; developping toplevels is a fun activity and there are a lot of
cool new features that can be added. Toplevels are used regularly by
both beginners and seasoned programmers, so they benefit the whole
community.
On the top of my head, here are a few examples of projects that could
be interesting to work on:
* utop interact: this is an experimental feature that has existed for
a while. However it is a bit painful to setup so it is currently
undocumented. However, properly packaged and maybe with the help of
a compiler plugin this could be a killer feature.
What it allows you to do is call `UTop_main.interact ()` somewhere
in your program. When the execution reaches this point, you get a
toplevel in the context of the call to `UTop_main.interact`,
allowing you to inspect the environment to understand what is
happening
* dependency refactoring: currently utop is based on big libraries
such as lambda-term or camomile. Nowadays UTF-8 is the norm and even
the Windows 10 console supports VT100 like escape sequences [1]. As
a result it would make sense to switch to more modern and lighter
libraries such as notty [2]
* better contextual help: in a lot of places utop could provide hints
to improve the user experience
* alternative editor support: currently the Emacs mode for utop works
like a normal toplevel. i.e. a session is a sequence of prompts,
inputs and outcomes that looks like this:
utop> 1 + 1;;
- : int = 2
utop> 6 * 7;;
- : int = 42
It would be easy to change it to look like:
1 + 1
[@@@outcome {|
- : int = 2
|}]
6 * 7
[@@@outcome {|
- : int = 42
|}]
Then a toplevel session would essentially become a valid .ml file
that you can feed to the compiler and where you can use your usual
development tools such as merlin.
And I'm sure there are a lot of other features that would make utop better.
[1] https://msdn.microsoft.com/en-us/library/windows/desktop/mt638032(v=vs.85).aspx
[2] https://github.com/pqwy/notty
--
Jeremie Dimino
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2017-05-29 11:16 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-05-29 11:15 [Caml-list] [ANN] utop 2.0.0 Jeremie Dimino
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox