Attn: Development Editor, Latest OCaml Weekly News

Alan Schmitt <[email protected]>
Newsgroups gmane.comp.lang.caml.inria
Message-ID <[email protected]>
Hello

Here is the latest OCaml Weekly News, for the week of November 14 to 21,
2023.

Table of Contents
─────────────────

opam 2.2.0~alpha3
ocaml and povray
the beginning of a platformer
ocaml shmups
Docfd: TUI fuzzy document finder 1.9.0
Tezt 4.0.0
OCaml 5.1.1 : incoming breaking change in the `Marshal' module
The OCaml Platform Roadmap is Adopted
Ppxlib dev meetings
MirageVPN (an OpenVPN™ implementation) is resurrected
Other OCaml News
Old CWN


opam 2.2.0~alpha3
═════════════════

  Archive: <https://discuss.ocaml.org/t/ann-opam-2-2-0-alpha3/13431/1>


Kate announced
──────────────

  We are happy to announce the release of [opam 2.2.0~alpha3].


[opam 2.2.0~alpha3]
<https://github.com/ocaml/opam/releases/tag/2.2.0-alpha3>

What’s new in this alpha?
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  • opam files now support a new `x-env-path-rewrite' field which
    specifies rewriting rules for the environment variable updates
    defined in the `setenv' and `build-env' fields. This is required for
    the Windows support. For more information see the [blog post].

  • `/tmp' is now writable again in the sandbox, restoring POSIX
    compliance. Since opam 2.0.9 only `$TMPDIR' was writable

  • `opam tree package.version' is now supported, displaying the
    dependency tree of a specific version of a package

  • `opam tree --recurse' and `--subpath' are now supported for
    directory arguments

  • a new `opam admin add-extrafiles' command has been added to
    add/check/update the `extra-files:' field according to the files
    present in the `files/' directory

  • a new `opam lint -W @1..9' argument has been added to allow marking
    a set of warnings as errors if they occur

  • Releases: pre-built binaries now include the `Linux/ppc64le' and
    `Linux/s390x' platforms

  • as well as a bunch of bug fixes and improvements

  You’ll find these features presented in the [blog post], and for even
  more details you can take a look at the [release note] or the
  [changelog].

  We encourage you to try out this alpha release, instructions are
  detailed in the [blog post], in particular [for Windows] where we now
  provide an **experimental** pre-built binary.

  On Unix-like systems though, to upgrade, simply run:

  ┌────
  │ bash -c "sh <(curl -fsSL
  │ https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh) --version
  │ 2.2.0~alpha3"
  └────

  Happy hacking, *<> <> The opam team <> <>* :camel:


[blog post] <https://opam.ocaml.org/blog/opam-2-2-0-alpha3/>

[release note] <https://github.com/ocaml/opam/releases/tag/2.2.0-alpha3>

[changelog] <https://github.com/ocaml/opam/blob/2.2.0-alpha3/CHANGES>

[blog post] <https://opam.ocaml.org/blog/opam-2-2-0-alpha3>

[for Windows]
<https://opam.ocaml.org/blog/opam-2-2-0-alpha3/#How-to-Test-opam-on-Windows>


ocaml and povray
════════════════

  Archive: <https://discuss.ocaml.org/t/ann-ocaml-and-povray/13436/1>


Florent Monnier announced
─────────────────────────

  Not something serious, something for the hobbies, here is a message to
  announce bindings for PovRay <https://povray.org>

  This project started as an early daft in 2009:
  <http://decapode314.free.fr/ocaml/povray/pov-bind.tgz> and more
  recently I continued this project:
  <http://decapode314.free.fr/ocaml/povray2/>

  The last version is: pov-bind-0.10

  Here are examples of things you can do with it (with sources under the
  images):
  • <http://decapode314.free.fr/ocaml/povray2/examples/0.07/views.html>
  • <http://decapode314.free.fr/ocaml/povray2/examples/0.08/>
  • <http://decapode314.free.fr/ocaml/povray2/examples/0.09/>

  Here is the api-doc of version 0.10:
  <http://decapode314.free.fr/ocaml/povray2/docs/0.10/Povray.html>

  This is not a bindings to a C lib, it’s a “printf wrapper”, it creates
  .pov files that you can provide to povray on the command line.

  3 api are provided: a simple one that returns strings, functions start
  with “get_*”, another one that accumumate to a “scene” type that you
  create at the begining with “new_scene”, and the third one is more
  descriptive with the type “scene_desc” which can be usefull if you
  want to List.map something (some other input that you want to
  represent graphically).


the beginning of a platformer
═════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/ann-the-beginning-of-a-platformer/13438/1>


Florent Monnier announced
─────────────────────────

  Here is the beginning of a platformer game that I made for my 3 years
  old son: <http://decapode314.free.fr/ant/platform7.3/platform.html>

  If the avatar falls into the water it changes its color, I made this
  because it was easy to do and it made laugh my son.

  On my computers MariOCaml is slow, so I was happy to see that my
  version is not slow, even with a bigger canvas size. It’s not slow
  even on a modest laptop.

  I didn’t found the algorythm by myself, I found it in an article but I
  didn’t kept the link. I should have kept it, so that I could have cite
  it in the source code.

  This algorithm is very simple, it simplifies the process, with 2
  loops, one for the Y axis, and another one for the X axis, so the move
  of the avatar is not a real diagonal, but it’s not visible when we
  play.

  Also it uses int calculations, so that it matches the pixel of the
  screen, and the pixel of the platform that it collides.

  I don’t know how MariOCaml’s physics works, I tried to read the source
  code to locate the physics, but I haven’t been able to find it.

  There is curently only one screen in the level. I would take any
  advice about how to make a level that is larger than one screen, which
  algorithm to use to check collisions with only the nearest blocks.


ocaml shmups
════════════

  Archive: <https://discuss.ocaml.org/t/ann-ocaml-shmups/13439/1>


Florent Monnier announced
─────────────────────────

  I would like to announce the last versions of my shmup(s) (look like
  several shmups but it’s only skins with different graphics):
  <http://decapode314.free.fr/games/shmups.html> the scrolling in
  shmup_px11 should be improved, there are 2 screens one on top of
  eachother for the scrolling instead of generating only one new needed
  line at the time (not one entire second screen). I also just fixed a
  bug in the adjacency map of shmup_px11 today.


Docfd: TUI fuzzy document finder 1.9.0
══════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/ann-docfd-tui-fuzzy-document-finder-1-9-0/13442/1>


Darren announced
────────────────

  I’m happy to share Docfd 1.9.0, which allows you to find and search
  through text files and PDFs quickly.

  • [Repo]
  • [Statically linked binary]


[Repo] <https://github.com/darrenldl/docfd>

[Statically linked binary]
<https://github.com/darrenldl/docfd/releases/tag/1.9.0>

Demos
╌╌╌╌╌

  Navigating repo:

  <https://global.discourse-cdn.com/business7/uploads/ocaml/original/2X/9/981c7a061a7bbeb4f24c7eb7e7db595a5eadbae3.gif>

  Navigating “OCaml Programming: Correct + Efficient + Beautiful” book
  PDF and opening it to the closest location to the selected search
  result via PDF viewer integration:

  <https://global.discourse-cdn.com/business7/uploads/ocaml/optimized/2X/a/ab4b7fe5ed6ff65b939672cf8fb8439334fca908_2_1380x752.jpeg>


Features
╌╌╌╌╌╌╌╌

  • Multithreaded indexing and searching
  • Multiline fuzzy search of multiple files or a single file
  • Swap between multi-file view and single file view on the fly
  • Content view pane that shows the snippet surrounding the search
    result selected
  • Text editor and PDF viewer integration


Major changes since 0.2.6
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  • PDF support and PDF viewer integration
  • Better text editor integration (opens to line containing start of
    search result in file)
  • On-disk cache of index
  • Proper word wrapping in TUI
  • General optimizations to allow searching relatively large documents


Tezt 4.0.0
══════════

  Archive: <https://discuss.ocaml.org/t/ann-tezt-4-0-0/13456/1>


rbardou announced
─────────────────

  It is my pleasure to announce the release of version 4.0.0 of Tezt, a
  test framework for OCaml which is well suited for unit, integration
  and regression tests in particular. It is used for most [Tezos] tests.

  The main highlights of this major release are:
  • `--help' is much easier to read;
  • custom command-line arguments for tests can now be defined using
    [Clap], and they will appear in `--help';
  • tests can now be selected using generic predicates such as `'tag1 &&
    (tag2 || file = test.ml)'';
  • one can now use the `JSON' module without linking with all of Tezt,
    by linking with the `tezt.json' sublibrary.

  See the [changelog] for the full list of changes, and the [API
  Documentation] for more details.

  You can install Tezt with opam:
  ┌────
  │ opam install tezt
  └────


[Tezos] <https://gitlab.com/tezos/tezos/>

[Clap] <https://github.com/rbardou/clap/>

[changelog]
<https://gitlab.com/nomadic-labs/tezt/-/blob/master/CHANGES.md#version-400>

[API Documentation]
<https://nomadic-labs.gitlab.io/tezt/4.0.0/tezt/Tezt/index.html>


OCaml 5.1.1 : incoming breaking change in the `Marshal' module
══════════════════════════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/ocaml-5-1-1-incoming-breaking-change-in-the-marshal-module/13457/1>


octachron announced
───────────────────

  Some time after the release of OCaml 5.1.0, we discovered that there
  in a packaging bug in the 5.1.0 compiler distribution: the new support
  for compressed compiler artefacts in the compiler made all OCaml
  executable program depends on the zstdlib library (if compression
  support was enabled).

  There is already an opam configuration option
  `-ocaml-option-no-compression' to disable this support and this
  dependency.

  Nevertheless, having a compiler dependency affects all OCaml end of
  users is far from ideal. Thus we have been trying to find alternatives
  to remove this dependency. Unfortunately, our current conclusion is
  that there are no robust and OS-independent solutions to remove this
  dependency in end-user programs while preserving the current `Marshal'
  api with its new `Compression' flag.

  Therefore, we are [currently planning to remove this flag] in the
  upcoming 5.1.1 patch release. The compiler will still support
  compression using an internal library, but the standard library will
  be free from any dependency on zstdlib. Support for compressed
  marshalling might be proposed in a separate library at a later point.

  This means that there will a breaking change in a patch release, but
  this breach of policy seemed a better option than leaving a disabled
  flag in a single version of the `Marshall' api.

  If we have any comments on this unfortunate solution, I am all ears.


[currently planning to remove this flag]
<https://github.com/ocaml/ocaml/pull/12734>


The OCaml Platform Roadmap is Adopted
═════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/the-ocaml-platform-roadmap-is-adopted/13459/1>


Thibaut Mattio announced
────────────────────────

  I am pleased to announce the adoption of the initial version of the
  [OCaml Platform roadmap]!

  The roadmap is the result of extensive collaboration with key
  contributors and [discussions within the community]. We extend our
  thanks to organizations who participated in user interviews, including
  Jane Street, Bloomberg, Ahrefs, LexiFi, Routine, and Meta, as well as
  the many developers who shared valuable insights that helped shape the
  roadmap. We also thank our dedicated OCaml Platform maintainers and
  those who contributed their feedback on Discuss.

  A few things that are important to keep in mind:

  • The roadmap is a living document. It will continue to evolve. Now
    that the first version is live on OCaml.org, don’t hesitate to
    propose amendments in the form of Pull Requests to the OCaml.org
    repository.
  • The roadmap is a directional guide, not a strict specification. It
    only sets priorities for tool development on the OCaml Platform,
    shaped in collaboration with maintainers. Changes in the workflows
    are very likely to happen as work starts on the different projects.
  • With a focus on addressing major developer needs and requests, the
    roadmap is a three-year plan. It’s a relatively short timeline, so
    it aims for a balance between long-term goals and immediate
    improvements.

  *Entering the Execution Phase*

  With the planning phase complete, we’re moving towards executing the
  roadmap. This is a community effort, and everyone can participate:

  • *Community members*: Contributions to Platform projects are welcome.
     All the Platform projects are actively looking for contributors and
     everyone will be more than happy to help you onboard on a
     project/task.
  • *OCaml developers*: Your feedback is always helpful. We encourage
     you to share your experiences and suggestions through issues or
     here, on Discuss.
  • *Industrial users*: If elements of the roadmap align with your
     organization’s interests, consider supporting through development
     contributions or funding maintainers.

  *Community Feedback*

  The roadmap went through a few iterations since its first draft was
  shared for community feedback. Among all the excellent feedback we
  received, the focus of the roadmap on building a cohesive experience
  through Dune is one point that spilt a lot of ink. I want to highlight
  a few changes we’ve made to the roadmap based on that feedback:

  • Re-wrote (P5) Tools are independent, yet unified
          Following on P4, we underline the critical importance of
          permitting tools to flourish independently: the OCaml
          Platform exists and will continue to exist as a
          collection of tools that can be used independently. […]
          Amidst this integration, we firmly commit to ensuring
          that tools retain their independence and continue to be
          accessible through their own CLIs.

  • Added (W15) Plugin Extensibility
          Following (P6) (The Platform is cohesive, yet
          extensible), Dune allows external tools to extend its
          language to add new build rules through a plugin system.
          […]

  • Added (W16) Integrate With Other Build Systems
          […] In order to ensure that the OCaml ecosystem remains
          accessible and usable for all these users, regardless of
          their chosen build system, Dune offers support to eject
          the build plan to a machine-readable format. This
          enables third-party tools to consume the exported build
          plan and convert it into other build systems’
          specifications. […]

  And as mentioned above, the roadmap is a living document, so don’t
  hesitate to send a PR to update or add development workflows.

  This roadmap is a significant step in our journey to improve the OCaml
  tooling, making OCaml even more pleasant to use, and easier to adopt.
  It was also the first time we organised a community discussion to
  adopt a Platform roadmap. This was absolutely worth it, and something
  we’ll aim to reproduce. In the meantime, if you have suggestions on
  how we can organise these conversations better in the future, don’t
  hesitate to share your thoughts.

  Now, time to build. On we go!


[OCaml Platform roadmap] <https://ocaml.org/docs/platform-roadmap>

[discussions within the community]
<https://discuss.ocaml.org/t/a-roadmap-for-the-ocaml-platform-seeking-your-feedback/12238>


Ppxlib dev meetings
═══════════════════

  Archive: <https://discuss.ocaml.org/t/ppxlib-dev-meetings/12441/10>


Sonja Heinze announced
──────────────────────

  Hello :)

  Tomorrow, concretely [date=2023-11-21 time=18:00:00
  timezone=“Europe/Madrid”], is our monthly ppxlib dev meeting. Here’s
  what we currently have on the agenda:

  • Deprecation of `Caml' in ppxlib and how breaking that change is.
  • `Ast_builder' and `Ast_pattern' have a restricted API wrt
    attributes. `Ast_helper' seemed more flexible wrt attributes. Why?
    (see <https://github.com/ocaml-ppx/ppxlib/issues/458> and
    <https://discuss.ocaml.org/t/best-practices-for-attributes-in-ppx/13400>)
  • We’re stopping the efforts to manually keep ppxlib compatible with
    `trunk'.
  • Ppxlib driver performance
  • Current state of `ppx_deriving'

  We’re making it a zoom meeting this time, so the meeting link is
  different than usual. Here it is:
  <https://us04web.zoom.us/j/74533427450?pwd=hx7YUL1LW9Ut9rycc4a1AAGyO36oIJ.1>


MirageVPN (an OpenVPN™ implementation) is resurrected
═════════════════════════════════════════════════════

  Archive: <https://mastodon.social/@hannesm/111420335653108997>


hannes announced
────────────────

  We have exciting #OCaml news:
  <https://blog.robur.coop/articles/miragevpn.html> – the MirageVPN (an
  OpenVPN™ implementation) is resurrected, and we’re making progress.

  We host <https://blog.robur.coop> (a #MirageOS unipi unikernel -
  <https://github.com/robur-coop/unipi>) using YOCaml
  (<https://github.com/xhtmlboi/yocaml>) and tlstunnel as reverse TLS
  proxy (<https://github.com/robur-coop/tlstunnel>). Deployment was done
  within < 15 minutes, using our #reproducible_builds infrastructure
  <https://builds.robur.coop>

  Enjoy reading :D

  Collaboration @dinosaure and @reynir


Other OCaml News
════════════════

>From the ocaml.org blog
───────────────────────

  Here are links from many OCaml blogs aggregated at [the ocaml.org
  blog].

  • [MirageVPN updated (AEAD, NCP)]
  • [MirageVPN & tls-crypt-v2]


[the ocaml.org blog] <https://ocaml.org/blog/>

[MirageVPN updated (AEAD, NCP)]
<https://blog.robur.coop/articles/miragevpn-ncp.html>

[MirageVPN & tls-crypt-v2]
<https://blog.robur.coop/articles/miragevpn.html>


Old CWN
═══════

  If you happen to miss a CWN, you can [send me a message] and I’ll mail
  it to you, or go take a look at [the archive] or the [RSS feed of the
  archives].

  If you also wish to receive it every week by mail, you may subscribe
  to the [caml-list].

  [Alan Schmitt]


[send me a message] <mailto:[email protected]>

[the archive] <https://alan.petitepomme.net/cwn/>

[RSS feed of the archives] <https://alan.petitepomme.net/cwn/cwn.rss>

[caml-list] <https://sympa.inria.fr/sympa/info/caml-list>

[Alan Schmitt] <https://alan.petitepomme.net/>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.