2024-06-22
[Caml-list] UNIF 2024 - Call for Participation
UNIF 2024: CALL FOR PARTICIPATION
The 38th International Workshop on Unification
Nancy, France, July 2, 2024
A satellite workshop of CADE/IJCAR, affiliated with IJCAR
Website: https://lat.inf.tu-dresden.de/unif2024
* The International Workshop on Unification (UNIF) is a yearly forum
devoted to unification theory and its applications. Unification is
concerned with the problem of making two given terms equal, either
syntactically or modulo an equational theory. It is a fundamental
process used in various areas of computer science, including automated
reasoning, term rewriting, logic programming, natural language
processing, program analysis, knowledge representation, types, etc.
* A non-exhaustive list of topics of interest includes: syntactic and
equational unification algorithms; matching and constraint solving;
higher-order unification; unification in modal, temporal, and
description logics; admissibility of inference rules; narrowing;
disunification; anti-unification; complexity issues; combination
methods; implementation techniques; applications.
* Invited speakers: George Metcalfe (University of Bern), Daniele
Nantes-Sobrinho (Universidade de Brasília, Imperial College London)
* The details of the invited talks, list of accepted contributions and
the schedule of technical program are available on the webpage.
* Registration: visit the IJCAR registration webpage at:
https://merz.gitlabpages.inria.fr/2024-ijcar/page/registration/
(registration possible until June 24)
2024-06-17
[Caml-list] PLMW@ICFP'24: Final call for Participation (travel funding application by June 21)
For full consideration for scholarship funding, please apply at the link below by June 21, AoE. We will notify accepted attendees in a rolling fashion until all funding is committed.
The application can be accessed at the following URL (Apply by June 21, 2024 AOE for full consideration!):
https://forms.gle/vC6udnMWRvvAczPR6
Workshop: Monday, September 2, 2024
Website: https://icfp24.sigplan.org/home/PLMW-ICFP-2024
PLMW is a workshop co-located with ICFP 2024 (the International Conference on Functional Programming) in Milan, Italy, from September 2-7.
The purpose of this mentoring workshop is to encourage graduate students and senior undergraduate students to pursue careers in programming language research. This workshop will bring together world leaders in programming languages research and teaching from academia and industry to help students imagine how they might contribute to our research community. Topics will range from the abstract (e.g., what is PL research and how does one become involved in it) to the concrete (e.g., how to navigate an academic conference, how to pick a research area) as well as technical talks on cutting-edge topics.
We especially encourage women and underrepresented minority students, and people with disabilities to attend PLMW.
This workshop is part of the activities surrounding ICFP, and takes place the day before the main conference. One goal of the workshop is to make the ICFP conference more accessible to newcomers. We hope that participants will stay through the entire conference.
Note that ICFP and PLMW are planned to be largely in-person events. While we recognize that travel to conferences is not easy for everyone, we do hope you will be able to join us in person to get the most out of the conference and its community-building aspects.
A number of sponsors have generously donated scholarship funds for qualified students to attend PLMW. These scholarships can cover expenses (airfare, hotel, and registration fees) for attendance at both the workshop and the ICFP conference.
Students attending this year will get one year free student membership of SIGPLAN, unless they prefer to opt out during their application.
The workshop registration is open to all. Students with alternative sources of funding are welcome as well.
2024-06-13
[Caml-list] POPL 2025: Call for Workshops and Co-located Events
POPL 2025
52nd ACM SIGPLAN-SIGACT Symposium on
Principles of Programming Languages
Sun 19 - Sat 25, January 2025
Denver, Colorado, United States
https://popl25.sigplan.org
The 52nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL 2025) will be held in Denver, Colorado, United States.
POPL provides a forum for the discussion of fundamental principles and important innovations in the design, definition, analysis, transformation, implementation and verification of programming languages, programming systems, and programming abstractions.
Events focusing on experimental and theoretical topics are welcome.
Proposals are invited for workshops and other events to be co-located with POPL 2025. All co-located events are sponsored by SIGPLAN (http://acm.org/sigplan/).
Workshops should be more informal and focused than POPL itself, and include sessions that enable interaction among the workshop attendees. The preference is for one-day workshops, but other schedules can also be considered.
---------------------------------------------------------------------
Submission details
Deadline for submission: 26 July 2024
Notification of acceptance: 2 August 2024
A workshop proposal should provide the following information:
* Name of the workshop.
* Duration of the workshop.
* Whether the workshop will be Conference-approved or SIGPLAN-approved (see below).
* Organizers: names, affiliation, contact information, brief (100 words) biography.
* A short description (150-200 words) of the topic.
* Event format: workshop; type of submissions if any; review process; results dissemination.
* Expected attendance and target audience.
* Potential PC members - please do not contact them before the workshop is approved.
* History of the workshop.
* Plans for remote participation
Proposals must be submitted in PDF form by email with the subject POPL 2025 Workshop Proposal: [workshop name], to the workshop co-chairs: Christoph Matheja (chmat@dtu.dk) and Robert Rand (rand@uchicago.edu).
---------------------------------------------------------------------
SIGPLAN Sponsorship
POPL co-located events are sponsored by SIGPLAN (http://sigplan.org/). There are two kinds of co-located events: Conference-approved (no proceedings) and SIGPLAN-approved (proceedings in the ACM Digital Library). See http://www.sigplan.org/Resources/Guidelines/Workshops/ for more information, including a full listing of prescriptions for Conference-approved and SIGPLAN-approved workshops.
SIGPLAN-approved workshops must respect the SIGPLAN Diversity Policy. Proposals for SIGPLAN-approved workshops must additionally include the gender, country of affiliation, and professional status of potential PC members. See https://www.sigplan.org/Resources/Policies/Diversity/ for more details.
---------------------------------------------------------------------
Selection committee
All submissions will be evaluated by a committee comprising the workshops co-chairs, the general chair, and the program chair.
---------------------------------------------------------------------
Further information
Any questions regarding POPL 2025 co-located event proposals should be addressed to the workshops chairs Christoph Matheja (chmat@dtu.dk) and Robert Rand (rand@uchicago.edu).
2024-06-11
[Caml-list] Attn: Development Editor, Latest OCaml Weekly News
OCaml Weekly News
Hello
Here is the latest OCaml Weekly News, for the week of June 04 to 11, 2024.
Table of Contents
- Providing Opam system dependancies with Nix
- ppx_deriving.6.0.2 and ppx_deriving_yojson.3.8.0
- Effective ML Through Merlin's Destruct Command
- OCaml Windows Working Group
- Flambda2 Ep. 2: Loopifying Tail-Recursive Functions, by OCamlPro
- OCaml Platform Newsletter: March-May 2024
- OCaml.org Newsletter: May 2024
- OCaml Windows Working Group
- Registration for Fun OCaml 2024 Opens Shortly
- opam 2.2.0~beta3
- Other OCaml News
- Old CWN
Providing Opam system dependancies with Nix
Ryan announced
I've opened a PR with input from @dra27 and @avsm adding support for Nix depexts (system dependencies) to Opam.
Opam supports system dependencies for other platforms by invoking the system package manager, e.g. apt-get install ...
. However Nix is a bit different, as in general installing a package to your system doesn't create the development environment required to use it; it will only add executables to your $PATH
. To find, for example, objects files, outside of a Nix derivation you can use nix-shell
and it's descendant nix develop
. E.g.:
$ nix-shell -p gmp $ echo $NIX_LDFLAGS -rpath /nix/store/20g5iw2r512gnfrdr4imp2y940v3vlif-shell/lib -L/nix/store/rx6nkd40819acppajq29g1hxa4d9r35f-gmp-with-cxx-6.3.0/lib -L/nix/store/rx6nkd40819acppajq29g1hxa4d9r35f-gmp-with-cxx-6.3.0/lib
We support Nix depexts with Opam in a similar way. A Nix derivation is build with the desired packages as inputs, and the resulting environment is output as a file in the Opam switch in a format that Opam can parse. This nix.env
file is a symlink into the Nix store, so acts as a garbage collection root – packages won't be removed from the store while this file exists. Opam outputs these environment variables on an invocation of opam env
.
This fixes issues such as https://discuss.ocaml.org/t/opam-and-nixos-is-there-an-alternative-to-nix-shell/13726.
While the primary use case is on NixOS, this depext mechanism could be used on other platforms to provide a consistent experience including other Linux distributions, BSDs, (and possibly even windows in the future).
Nixpkgs typically only packages one version of a package at a time, but I'm working on versioned depexts with previous version of Nixpkgs as outlined here.
I'm keen to get people's opinions and perspective on this!
ppx_deriving.6.0.2 and ppx_deriving_yojson.3.8.0
Nathan Rebours announced
I am happy to announce the release of ppx_deriving.6.0.2 and ppx_deriving_yojson.3.8.0, the first release of those packages in years!
The main feature here is the port of ppx_deriving's standard derivers ([@@deriving show, make, ord, eq, ...]
) and ppx_deriving_yojson to ppxlib's Deriving
api. There are no changes to how you'd use those derivers but many benefits:
- Better performances and better integration with other ppx-es as the code is now generated as part of ppxlib's driver main AST rewriting phase rather than in a separate, dedicated phase.
- They can now be used with
[@@deriving_inline]
- None of them will break the location invariant required by merlin anymore, fixing a long lasting bug and providing a much better user experience.
You can find the full release notes for ppx_deriving here and for ppx_deriving_yojson here.
I'd like to thank @sim642 for all their work on the ppxlib ports and their patience, and all our other contributors.
I'd also like to thank the OCaml Software Foundation who has been funding my work on those releases.
Effective ML Through Merlin's Destruct Command
Xavier Van de Woestyne announced
I'm very pleased to present you an article with a collection of small illustrations and examples of how to use the destruct
command to generate patterns in the presence of pattern matches.
The command has been present in Merlin for several years (and accessible via OCaml-LSP) but, as the various changelogs relating to Merlin mention, we have spent some time polishing it and adapting it to the evolutions of OCaml, making it more stable (essentially in the presence of punning) and taking into account the changes made to the representation of functions (and their parameters).
The aim of the article is to show how the destruct
command works in a number of very concrete cases, and ends with an example (a little artificial for the purposes of the article and for teaching purposes) which shows how to use destruct
interactively.
- Effective ML Through Merlin's Destruct Command: original article, written in English, on the Tarides blog.
- Effective ML, au travers de la commande 'destruct': A French-language interpretation of the article, published on my blog.
Can't wait to hear your feedback! Happy reading!
OCaml Windows Working Group
Sudha Parimala announced
I'm happy to share that we're starting a working group for OCaml Windows. This is part of a larger effort, First-class Windows, to enhance the OCaml experience on Windows. Through this effort, we aim to coordinate our collective knowledge to identify high-priority items for First-class Windows.
We've started a mailing list to exchange ideas and would greatly appreciate inputs. You can sign up at – https://groups.google.com/u/0/g/ocaml-windows-wg
While the mailing list is intended to be the primary means of communication, we plan to do a sync meeting once a month, to start with. We plan to do a kick-off meeting early next week. Please fill in this poll if you're interested to join: https://strawpoll.com/polls/PbZqbmkNeyN.
Happy camling :camel:
Flambda2 Ep. 2: Loopifying Tail-Recursive Functions, by OCamlPro
OCamlPro announced
Greetings Cameleers,
We would like to share with you our latest Flambda2 Snippet: Flambda2 Ep. 2: Loopifying Tail-Recursive Functions!
Indeed, today's topic is what is called Loopify
, one of the many optimisation algorithms found in the Flambda2
optimising compiler project.
We believe Loopify
is a nicely representative piece of software for our readers to grasp at the general design and philosophy for all optimisations available in Flambda2
! Hopefully, you will do too!
Be sure to check out the Flambda2 Ep.0
article to get all the context for the project itself and the series of blog posts!
In any case, we await your feedback below, and hope that you will enjoy reading this post, and all ensuing ones!
Kind regards, The OCamlPro Team
OCaml Platform Newsletter: March-May 2024
Thibaut Mattio announced
Welcome to the eleventh edition of the OCaml Platform newsletter!
In this March-May 2024 edition, we are excited to bring you the latest on the OCaml Platform, continuing our tradition of highlighting recent developments as seen in previous editions. To understand the direction we're headed, especially regarding development workflows and user experience improvements, check out our roadmap.
Highlights:
- Explorations on Dune package management have reached a Minimal-Viable-Product (MVP) stage: a version of Dune that can build non-trivial projects like OCaml.org and Bonsai. With a working MVP, the team is shifting their focus to putting Dune package management in the hands of the community. To that end, we have started the Dune Developer Preview Program, where we will test Dune package management with users and refine the user experience in preparation for a final release.
- The opam team released a second beta of opam 2.2, and with it, opened the final PR to add support for Windows OCaml to the opam-repository. Once the PR is merged, opam 2.2 will be usable with the upstream opam-repository on Windows, paving the way for a third beta very soon, and a Release Candidate next.
- The odoc team has finalized the initial design for Odoc 3.0 and opened several RFCs to gather community input. We've implemented a new Odoc driver that follows the Odoc 3.0 design and have already started prototyping key parts of the design.
- Merlin's project-wide references query is getting very close to release. The necessary compiler PR has been merged and included in OCaml 5.2, and the Dune rules PR has been merged and included in Dune 3.16. The next steps are to merge the PR in Merlin itself and the small patch in OCaml LSP.
- The set of standard derivers shipped with
ppx_deriving.std
(i.e.[@@deriving show, make, ord, eq, ...]
) as well asppx_deriving_yojson
are now directly written against Ppxlib's API. That impacts developers in two ways. First, it allows you to enjoy reliable editor features in projects with those derivers (Ppxlib preserves Merlin's location invariants). Second, you can avoid a hard dependency on those derivers by using Ppxlib'sderiving_inline
feature on them. Thanks a lot to @sim642 for all your work and very kind patience, @NathanReb for reviewing and release managing, and everyone else involved!
Releases:
[Dune] Exploring Package Management in Dune (W4)
Contributed by: @rgrinberg (Tarides), @Leonidas-from-XIV (Tarides), @gridbugs (Tarides), @Alizter
Why: Unify OCaml tooling under a single command line for all development workflows. This addresses one of the most important pain points reported by the community.
What: Prototyping the integration of package management into Dune using opam as a library. We're introducing a dune pkg lock
command to generate a lock file and enhancing dune build
to handle dependencies in the lock file. More details in the Dune RFC.
Summary:
Over the past three months, significant progress has been made in adding Dune's support for package management. We are thrilled to report that our prototypes have reached a Minimal Viable Product (MVP) stage: an experimental version of Dune package management that can be used to build non-trivial projects, including OCaml.org and Bonsai, which we are using in our tests.
There is still a long way to go, but with this milestone reached, we are now shifting our focus from prototyping to putting the feature in the hands of the community. We are moving to testing the new Dune feature with users, and in particular, now that we have a good understanding of the technical blockers and their workarounds, we will be focusing on validating and refining the developer experience (DX) of Dune package management in preparation for a first release.
To that end, the Dune team has started a Dune Developer Preview Program. We're currently testing the Developer Preview of package management with selected beta testers, and once the biggest issues have been addressed, we'll be opening it to the broader community.
Activities:
- Continued addressing remaining issues with ocamlfind and zarith.
- Added repro PRs for ocamlfind and zarith issues – ocaml/dune#10233, ocaml/dune#10235.
- Iterated on a solution for relocatable ocamlfind – ocaml/ocamlfind#72.
- Removed
.mml
references in ocamlfind – ocaml/ocamlfind#75. - Set OCAMLFIND_DESTDIR for install actions to fix ocamlfind installation issues – ocaml/dune#10267.
- Added a test reproducing error when locking when a pin stanza contains a relative path outside the workspace – ocaml/dune#10255.
- Fixed package creation issues with directories on different filesystems – ocaml/dune#10214.
- Opened PRs to address user errors, improve error messages, and enhance environment handling for pkg rules – ocaml/dune#10385, ocaml/ocamlbuild#327, ocaml/dune#10403, ocaml/dune#10407, ocaml/dune#10455.
- Addressed several issues related to
withenv
actions,dune pkg lock
, and unexpected behavior with variable updates – ocaml/dune#10404, ocaml/dune#10408, ocaml/dune#10417, ocaml/dune#10440, ocaml/opam#5925, ocaml/opam#5926. - Approved relocatable releases of ocamlfind and ocamlbuild – ocaml-dune/opam-overlays#1, ocaml-dune/opam-overlays#2.
- Cleaned up and sought feedback on the relocatable ocamlfind PR – ocaml/ocamlfind#72.
- To work around the fact that the compiler is not relocatable (yet!), we worked on adding support to Dune to manage compiler and developer tools, an experimental feature we call Dune Toolchain. – ocaml/dune#10470, ocaml/dune#10474, ocaml/dune#10475, ocaml/dune#10476, ocaml/dune#10477, ocaml/dune#10478.
- Addressed various issues related to pkg lock, environment updates, and package management – ocaml/dune#10512, ocaml/dune#10499, ocaml/dune#10498, ocaml/dune#10531, ocaml/dune#10521, ocaml/dune#10539, ocaml/dune#10540, ocaml/dune#10543, ocaml/dune#10544, ocaml/dune#10545, ocaml/dune#10538, ocaml/dune#10542, ocaml/dune#10595, ocaml/dune#10596, ocaml/dune#10592, ocaml/dune#10593.
- Merged PRs to use unpack code for rsync URLs and disable hg/darcs fetch code – ocaml/dune#10556, ocaml/dune#10561.
[opam] Native Support for Windows in opam 2.2 (W5)
Contributed by: @rjbou (OCamlPro), @kit-ty-kate (Ahrefs), @dra27 (Tarides), @AltGr (OCamlPro)
Why: Enhance OCaml's viability on Windows by integrating native opam and opam-repository
support, fostering a larger community, and more Windows-friendly packages.
What: Releasing opam 2.2 with native Windows support, making the official opam-repository
usable on Windows platforms.
Summary:
The opam team is getting closer to a final release of opam 2.2 with support for Windows. In the past months, we have released a second beta of opam 2.2, addressing a number of issues reported by users on previous releases, including Windows issues.
Excitingly, we also opened the final PR adding support for Windows OCaml to opam-repository. With the PR merged, the opam team is expecting to be able to move to a Release Candidate in June.
Stay tuned for more exciting news and releases in the coming weeks and months!
Activities:
- Packaging the compiler in opam-repository
- We cleared WIP items in the windows-initial branch, creating the mingw-w64-shims repository for the C stub program and generation script needed for the mingw-w64-shims opam package.
- Various fixes for msvs-detect were upstreamed and the opam packaging PR finalized – metastack/msvs-tools#17, metastack/msvs-tools#18.
- Initial upstreaming PRs were opened for Visual Studio configuration – ocaml/opam-repository#25440, reorganization of conf-zstd – ocaml/opam-repository#25441, and native Windows depexts – ocaml/opam-repository#25442.
- Fixed mccs package dependencies upstream – ocaml-opam/ocaml-mccs#52, ocaml/opam-repository#25482.
- Upstreamed support for source-packaging of flexdll – ocaml/flexdll#135.
- Worked on packaging scripts for winpthreads for OCaml 5.3.0 – ocaml/winpthreads#1.
- Further upstreaming PRs were opened for mingw-w64-shims – ocaml/opam-repository#25454, and flexdll and winpthreads sources packages – ocaml/opam-repository#25512.
- Reviewed and tested changes related to the 4.14.2 release for the sunset branch of opam-repository-mingw – ocaml-opam/opam-repository-mingw#20, ocaml-opam/opam-repository-mingw#21.
- Updated the windows-initial branch to support MSYS2, including creating msys2-opam to complement mingw-w64-shims.
- Upstreamed issues with the ocaml-variants.5.1.1+effect-syntax package – ocaml/opam-repository#25645.
- Investigated BER MetaOCaml, determining that 4.14.1+BER does not work on Windows and disabled it in opam-repository – ocaml/opam-repository#25648.
- Worked further on the draft PR, addressing the issue of invalid maintainer email addresses for packages – ocaml/opam-repository#25826.
- Opened the main PR for Windows compiler support – ocaml/opam-repository#25861, with a parallel draft PR for updating the compiler's opam file – ocaml/ocaml#13160.
- Backported ocaml/ocaml#13100 to 5.1.x ocaml-variants – ocaml/opam-repository#25828, awaiting opam 2.2.0~beta3 release.
- Release opam 2.2
- Completed work on various patches and PRs, including fixes for accented characters in Dune – ocaml/opam#5861, ocaml/opam#5871, janestreet/spawn#58, ocaml/opam#5862.
- Worked on performance improvements for Windows, including adding job statuses and a proof-of-concept for a spinner on slow-running build jobs – ocaml/opam#5883.
- Finalizing fix on Cygwin PATH handling for opam 2.2.0 beta2 – ocaml/opam#5832.
- Mark the internal cygwin installation as recommended - ocaml/opam#5903
- Hijack the
%{?val_if_true:val_if_false}%
syntax to support extending the variables of packages with + in their name - ocaml/opam#5840 - Fixed issues with downloading URLs with invalid characters and opam's internal state – ocaml/opam#5921, ocaml/opam#5922.
- Assembled test harnesses for
opam init
and addressed issues withopam lint
warnings – dra27/opam-testing, ocaml/opam#5927, ocaml/opam#5928. - Fixed reversal of environment updates and minor issues in GitHub Actions – ocaml/opam#5935, ocaml/opam#5938.
- Released opam 2.2~beta2.
- Fixed issues related to environment variable handling – ocaml/opam#5935.
- Finalized fixes for Git for Windows menu – ocaml/opam#5963.
- Minor fixes to
--cygwin-extra-packages
– ocaml/opam#5964. - Refactored
opam init
for a more logical experience – ocaml/opam#5963. - Updated lint warning 41 PR – ocaml/opam#5927.
- Responded to issues found by testers of Windows compiler packages – ocaml/flexdll#138, ocaml/flexdll#139.
- Completely reworked
opam init
to detect Cygwin and MSYS2 installations. - Fixed issues with the
?
operator and MSYS2's native curl implementation – ocaml/opam#5983, ocaml/opam#5984.
[odoc
] Odoc 3.0: Unify OCaml.org and Local Package Documentation (W25)
Contributed by: @jonludlam (Tarides), @julow (Tarides), @panglesd (Tarides), Luke Maurer (Jane Street)
Why: Improving local documentation generation workflow will help package authors write better documentation for their packages, and consolidating the different odoc
documentation generators will help make continuous improvements to odoc
available to a larger audience.
What: We will create conventions that drivers must follow to ensure that their output will be functional. Once established, we will update the Dune rules to follow these rules, access new odoc
features (e.g., source rendering), and provide similar functionalities to docs.ocaml.org (a navigational sidebar, for instance). This will effectively make Dune usable to generate OCaml.org package documentation.
Summary:
The Odoc team has made significant progress on the upcoming Odoc 3.0. We held productive in-person meetings in Paris to discuss crucial design aspects such as the CLI, source code rendering, and references. These discussions led to the publications of RFCs for the various components of the design specification.
We also started implementing a new Odoc driver that adheres to the new design for testing purposes, and began prototyping several of the new features.
While discussions on the RFCs and specific features are still ongoing, we are very excited to have a solid set of design specifications under community review and to have begun implementing key parts of the new design.
Activities:
- Investigated package name/library name mismatches and module name clashes – jonludlam/2997e905a468bfa0e625bf98b24868e5, jonludlam/0a5f1391ccbb2d3040318b154da8593a.
- Continued work on odoc 3.0 design, including meetings and discussions, culminating in the publication of the RFC – ocaml/odoc/discussions/1097.
- Worked on the navigation PR, added functionalities, fixed bugs, and completed the rebase – ocaml/odoc#1088.
- Met in Paris to discuss the odoc 3.0 design, covering topics such as CLI, rendering source code, and references.
- Opened a PR with basic support for markdown in standalone pages – ocaml/odoc#1110.
- Published the current proposal for assets as a discussion – ocaml/odoc#1113.
- Continued discussions on Markdown rendering and asset references - ocaml/odoc#1110.
- Implemented a new driver for testing the odoc 3.0 implementation – ocaml/odoc#1121, ocaml/odoc#1128.
- Worked on implementing the –parent-id flag part of the Odoc 3.0 spec – ocaml/odoc#1126.
- Worked on implementing the
-L
and-P
flags ocaml/odoc#1132
[Merlin] Support for Project-Wide References in Merlin (W19)
Contributed by: @vds (Tarides), @Ekdohibs (OCamlPro), @Octachron (INRIA), @gasche (INRIA), @emillon (Tarides), @rgrinberg (Jane Street), @Julow (Tarides)
Why: Enhance code navigation and refactoring for developers by providing project-wide reference editor features, aligning OCaml with the editor experience found in other languages.
What: Introducing ocamlmerlin server occurrences
and LSP textDocument/references
support, extending compiler's Shapes for global occurrences and integrating these features in Dune, Merlin, and OCaml LSP.
Summary:
The past few months have seen fantastic progress on releasing Merlin's project-wide reference query: The compiler PR got merged and included in the now released OCaml 5.2; The Dune rules PR got merged, and with it significant performance improvements have been made on the indexing tool. The final PR in Merlin is open and under review. That PR as well as the small LSP patch to support the feature are about to be merged.
The PR on Merlin also adds support for the feature in the Merlin server plug-in for Emacs. Support for the Merlin server plug-in for Vim has been added separately. All editor plug-ins based on LSP will support the new feature automatically.
Activities:
- We followed up on our compiler PR to improve performance for shape aliases weak reduction. It got merged, and made it into OCaml 5.2.0. – ocaml/ocaml#13001
- We improved the Dune rules that drive the indexer: Simplified the rules, added benchmarks, discussed and improved performance. The PR got merged, and made it into Dune 3.16. - ocaml/dune#10422
- We polished the indexer
ocaml-index
: Profiled it and improved its speed by a factor ~2, and improved its CLI. - We added a
:MerlinOccurrencesProjectWide
command to the Vim plug-in based on the Merlin server - ocaml/merlin#1767
OCaml.org Newsletter: May 2024
Sabine Schmaltz announced
Welcome to the May 2024 edition of the OCaml.org newsletter! This update has been compiled by the OCaml.org team. You can find previous updates on Discuss.
Our goal is to make OCaml.org the best resource for anyone who wants to get started and be productive in OCaml. The OCaml.org newsletter provides an update on our progress towards that goal and an overview of the changes we are working on.
We couldn't do it without all the amazing people who help us review, revise, and create better OCaml documentation and work on issues. Your participation enables us to so much more than we could just by ourselves. Thank you!
This newsletter covers:
- Recipes for the OCaml Cookbook: Help us make the OCaml Cookbook really useful by contributing and reviewing recipes for common tasks!
- Community & Marketing Pages Rework: We have UI designs for the reworked and new pages of the community section and are starting to implement these. We made progress towards showing videos from the community on the OCaml Planet.
- General Improvements: As usual, we also worked on general maintenance and improvements, so we're highlighting some of the work that happened below.
Open Issues for Contributors
You can find open issues for contributors here!
Here are some (as of writing this newsletter) open issues:
Recipes for the OCaml Cookbook
The OCaml Cookbook is a place where OCaml developers share how to solve common tasks using packages from the ecosystem.
A recipe is a code sample and explanations on how to perform a task using a combination of open source libraries.
The Cookbook is live at ocaml.org/cookbook, but there are not a lot of recipes published yet.
When the cookbook was merged, all pull requests to the cookbook branch were automatically closed. We recreated these pull requests and they are ready for review.
Here's how you can help:
- Review open pull requests for cookbook recipes!
- Contribute new recipes and tasks for the cookbook!
Relevant PRs and Activities:
- PR: Add a checklist for OCaml Cookbook recipe review ocaml/ocaml.org#2419 by @sabine
- PR: Cookbook filesystem ocaml/ocaml.org#2399
- PR: Cookbook networking ocaml/ocaml.org#2400
- PR: Cookbook xml ocaml/ocaml.org#2401
- PR: cookbook httpclient ocaml/ocaml.org#2402
- PR: cookbook uri ocaml/ocaml.org#2403
- PR: Cookbook regexp2 ocaml/ocaml.org#2404
- PR: Cookbook unzip ocaml/ocaml.org#2405
- PR: Cookbook linalg ocaml/ocaml.org#2406
- PR: Cookbook getenv ocaml/ocaml.org#2407
- PR: Cookbook shell ocaml/ocaml.org#2408
- PR: Cookbook geodesic ocaml/ocaml.org#2409
- PR: Add cookbooks for JSON serialisation and deserialisation ocaml/ocaml.org#2415 by @gpopides
- PR: Cookbook Encode and Decode Bytestrings from Hex-Strings ocaml/ocaml.org#2445 by @ggsmith842
Community & Marketing Pages Rework
This month, we made some progress towards adding videos from the OCaml community (e.g., from YouTube and watch.ocaml.org) to the OCaml Planet.
Since the size of the OCaml Planet RSS feed grew so large that automation tools (dlvr.it
) could no longer process it, we reduced the timeframe for posts to show up in the RSS feed to the last 90 days.
Contributor @ishar19 opened a pull request to add an RSS feed for the Community/Events page. This will allow posting new events to various social media automatically and allow you to subscribe to the Events RSS feed with a RSS reader of your choice.
We have UI designs for the reworked and new pages of the community section and we are opening small issues for contributors to help. :orange_heart:
Relevant PRs and Activities:
- The OCaml Planet
- PR: Community videos scraping and list page ocaml/ocaml.org#2441 by @cuihtlauac
- PR: Scrape watch.ocaml.org as an RSS feed ocaml/ocaml.org#2428 by @cuihtlauac
- PR: No longer feature posts on the OCaml Planet ocaml/ocaml.org#2430 by @cuihtlauac
- PR: Set the cutoff date for the OCaml Planet RSS feed to 90 days ocaml/ocaml.org#2416 by @sabine
- PR: Filter OCaml Planet Blog posts for "OCaml" keyword ocaml/ocaml.org#2443 by @cuihtlauac
- PR: add redirect for /blog to /ocaml-planet ocaml/ocaml.org#2450 by @sabine
- PR: Dedupe RSS feed creation logic ocaml/ocaml.org#2461 by @cuihtlauac
- Events page
- PR: Feat/events rss feed ocaml/ocaml.org#2437 by @ishar19
Outreachy Internship on Interactive Exercises
On May 27, Divyanka Chaudhari started working with the team, as an Outreachy intern. She's implementing support for running the exercises as a stand-alone project, either in GitHub Codespace, in repl.it
, using Jupyter or LearnOcaml.
Relevant PRs and Activities:
- PR: Fix 007 answer folder not running test cases ocaml/ocaml.org#2458 by @divyankachaudhari
## General Improvements and Data Additions
Notable Changes:
- We restructured the main navigation to have a "Tools" section that holds the OCaml Platform page and the OCaml compiler releases page. This should make the OCaml Platform page easier to find.
- The Changelog can now be found under "News", from the main navigation. You can also find the OCaml Planet and the Newsletters in this new section.
- The OCaml Language Manual is now served from OCaml.org, instead of v2.ocaml.org.
- We added some more links to learning resources to the Resources page at https://ocaml.org/resources.
- Some documentation updates on "Is OCaml Web Yet?", "Is OCaml GUI Yet?", the ThreadSanitizer tutorial, and the "Functors" tutorial.
Relevant PRs and Activities:
- Features
- PR: Introduce a tools section for platform page, releases page, and a news section for changelog, OCaml Planet and Newsletters ocaml/ocaml.org#2410 by @sabine
- Migration of the Language Manual from v2.ocaml.org to OCaml.org
- PR: fix: language manual redirect, remove unnecessary append of index.html ocaml/ocaml.org#2470 by @sabine
- PR: Fix: redirect to downloadable manual files ocaml/ocaml.org#2439 by @sabine
- PR: Simplify and extend releases redirects from legacy v2.ocaml.org URLs ocaml/ocaml.org#2448 by @cuihtlauac
- PR: Fix #2465 ocaml/ocaml.org#2468 by @cuihtlauac
- PR: Fix more redirect ocaml/ocaml.org#2471 by @cuihtlauac
- Data
- PR: (data) add some learning resources ocaml/ocaml.org#2474 by @sabine
- PR: Add University of Bologna as academic institution ocaml/ocaml.org#2394 by @boozec
- PR: (data) Update ocaml.org community meeting zoom link ocaml/ocaml.org#2413 by @sabine
- PR: (data) jobs: add a XenServer position again ocaml/ocaml.org#2414 by @edwintorok
- PR: (data) add ocaml.org newsletter April 2024 ocaml/ocaml.org#2417 by @sabine
- PR: OCaml 5.2.0 announce and release page ocaml/ocaml.org#2421 by @Octachron
- PR: Update OCamlPro's logo ocaml/ocaml.org#2436 by @hra687261
- PR: Changelog entry for OCaml 5.2.0~rc1 ocaml/ocaml.org#2391 by @Octachron
- PR: changelog: add Dune 3.15.1 and 3.15.2 ocaml/ocaml.org#2389 by @emillon
- PR: Add changelog entry for Merlin 5.0 ocaml/ocaml.org#2472 by @pitag-ha
- Bugfixes
- PR: fix dark style of package version pages ocaml/ocaml.org#2438 by @FrugBatt
- GitHub actions CI broke due to an OpenSSL issue on MacOS
- PR: Update debug-ci.yml ocaml/ocaml.org#2397 by @cuihtlauac
- PR: Update debug-ci.yml ocaml/ocaml.org#2398 by @cuihtlauac
- PR: Do brew update before installing openssl@3 to fix macos CI ocaml/ocaml.org#2420 by @sabine
- PR: (ci) Restrict openssl on macos to 3.2 to see if that fixes CI ocaml/ocaml.org#2390 by @sabine
- Documentation
- PR: Explain how to avoid cyclic abbreviation error with functor application ocaml/ocaml.org#2457 by @cuihtlauac
- PR: Update tutorial "Transitioning to Multicore with ThreadSanitizer" ocaml/ocaml.org#2459 by @OlivierNicole
- PR: (docs) web.md: jsonchema->atd exists ocaml/ocaml.org#2454 by @Khady
- PR: Update is_ocaml_yet/gui.md: Plotting ocaml/ocaml.org#2452 by @lukstafi
OCaml Windows Working Group
Deep in this thread, Sudha Parimala announced
Thanks to everyone who joined the meeting! Please find the notes here: https://docs.google.com/document/d/1tt-g5f441ClvdGJuK8fvO9Eu2YvWMwDF1wbZ2f8-gsI/edit#heading=h.kwwpagbnenby.
The meeting time this time wasn't US time-zone friendly. We'll try to find a time that works for more people next time.
Registration for Fun OCaml 2024 Opens Shortly
Sabine Schmaltz announced
Registration for Fun OCaml 2024 will open shortly at 17:00 CEST (Central European Summer Time) UTC/GMT +2 hours
Please put yourself on the waiting list if you don't get a ticket immediately, we're doing this in a staggered fashion, unlocking more tickets over the next days! ๐งก๐ซ
opam 2.2.0~beta3
Kate announced
We're once again very excited to announce this third and final beta for opam 2.2.0.
What's new in this beta?
- opam init on Windows enhancements: this beta greatly improves the
opam init
user experience on Windows, and the number of recognised configurations - opam init –cygwin-extra-packages=\<pkgs\>: a new argument to specify additional packages for the internal Cygwin installation
- Support of user directories containing spaces: opam now redirects the opam root to
C:\opamroot\opam-xxx
when the opam root contains spaces on Windows - UTF-8 paged –help on Windows thanks to cmdliner 1.3.0 and some additional Windows API calls, all the
opam --help
commands now display a paged view by default similar to Unix-like systems. - Many fixes, performance and general improvements
:open_book: You can read our blog post for more information about these changes and more, and for even more details you can take a look at the release note or the changelog.
Windows issues
Configuration of Windows is tricky, so please don't be too disheartened if things don't work instantly. If something doesn't work first time, please do report it, even if you manage to find a way to workaround it. If opam didn't elegantly tell you what was wrong, then it's a bug and we'd love to hear about it, rather than ending up with a series of workarounds flying around. It's no problem at all for us to receive a bug report which turns out to be user error - we'd far rather that than not hear bugs which are opam's error! ๐
How to upgrade
- On Windows
BEWARE: the command shown below is experimental, use caution and please do report any issues that you are experiencing. If you prefer to not use our experimental script, feel free to get the Windows binary directly from the Release Page and put it in your directory of choice instead.
Now that the Windows support was merged in opam-repository,
installing opam is as simple as calling the following command from a PowerShell terminal:
Invoke-Expression "& { $(Invoke-RestMethod https://raw.githubusercontent.com/kit-ty-kate/opam/windows-installer/shell/install.ps1) }"
opening a new terminal, and a simple
opam init
will work out-of-the-box. - On Unix-like systems
To upgrade, simply run:
bash -c "sh <(curl -fsSL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh) --version 2.2.0~beta3"
We're planning for an opam 2.2.0~rc1 release later next week, so please do report any issue you encounter on our bug-tracker.
Other OCaml News
From the ocaml.org blog
Here are links from many OCaml blogs aggregated at the ocaml.org blog.
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.
2024-06-04
[Caml-list] [Deadline extention] ML 2024 – Call for presentations: ACM SIGPLAN ML Family Workshop
Dear all,
We extended the deadline for presentation proposals at the ML workshop (@ ICFP 2024) to June 14th.
If you cannot join us in Milan, remote presentations are also possible.
Please find the complete CFP below.
Best regards,
Guillaume Munch-Maccagnoni
We are happy to invite submissions to ML 2024 (apologies for cross-postings).
* Submission deadline: June 14th
* September 6th in Milan, Italy. Co-located with ICFP 2024.
* Submission website: https://ml2024.hotcrp.com * Workshop website: https://icfp24.sigplan.org/home/mlworkshop-2024
# Higher-order, Typed, Inferred, Strict: ACM SIGPLAN ML Family Workshop
ML (originally, "Meta Language") is a family of programming languages
that includes dialects known as Standard ML, OCaml, and F#, among
others. The development of these languages has inspired a large amount
of computer science research, both practical and theoretical.
The ML Family Workshop is an established informal workshop aiming to
recognize the entire extended ML family and to provide the forum to
present and discuss common issues: all aspects of the design,
semantics, theory, application, implementation, and teaching of the
members of the ML family. We also encourage presentations from related
languages (such as Haskell, Scala, Rust, Nemerle, Links, Koka, F*,
Eff, ATS, etc), to promote the exchange of ideas and experience. The
ML family workshop will be held in close coordination with the OCaml
Users and Developers Workshop.
## Format
The ML 2024 workshop will continue the informal approach followed
since 2010. Presentations are selected by the program committee from
submitted proposals. There are no published proceedings, so
contributions may be submitted for publication elsewhere. The main
criterion is the promoting and informing the development of the entire
extended ML family and delivering a lively workshop atmosphere. We
particularly encourage talks about works in progress, presentations of
negative results (things that were expected to but did not quite work
out) and informed positions.
Each presentation should take 20-25 minutes. The exact time will be
decided based on scheduling constraints.
We plan the workshop to an be in-person event with remote
participation (streamed live). Speakers are generally expected to
present in person (we will work to make remote presentations
possible).
The 2024 ML family workshop is co-located with ICFP 2024 and will take
place on September the 6th in Milan, Italy.
## Scope
We seek presentations on topics including (but not limited to):
* Language design: abstraction, higher forms of polymorphism,
concurrency, distribution and mobility, staging, extensions for
semi-structured data, generic programming, object systems, etc.
* Implementation: compilers, interpreters, type checkers, partial
evaluators, runtime systems, garbage collectors, foreign function
interfaces, etc.
* Type systems: inference, effects, modules, contracts, specifications
and assertions, dynamic typing, error reporting, etc.
* Applications: case studies, experience reports, pearls, etc.
* Environments: libraries, tools, editors, debuggers, cross-language
interoperability, functional data structures, etc.
* Semantics of ML-family languages: operational and denotational
semantics, program equivalence, parametricity, mechanization, etc.
We specifically encourage reporting what did not meet expectations or
what, despite all efforts, did not work to satisfaction.
Four kinds of submissions are solicited: Research Presentations,
Experience Reports, Demos, and Informed Positions.
* Research Presentations: Research presentations should describe new
ideas, experimental results, or significant advances in ML-related
projects. We especially encourage presentations that describe work
in progress, that outline a future research agenda, or that
encourage lively discussion. These presentations should be
structured in a way which can be, at least in part, of interest to
(advanced) users.
* Experience Reports: Users are invited to submit Experience Reports
about their use of ML and related languages. These presentations do
not need to contain original research but they should tell an
interesting story to researchers or other advanced users, such as an
innovative or unexpected use of advanced features or a description
of the challenges they are facing or attempting to solve.
* Demos: Live demonstrations or short tutorials should show new
developments, interesting prototypes, or work in progress, in the
form of tools, libraries, or applications built on or related to ML
and related languages. (You will need to provide all the hardware
and software required for your demo; the workshop organizers are
only able to provide a projector.)
* Informed Positions: A justified argument for or against a language
feature. The argument must be substantiated, either theoretically
(e.g., by a demonstration of (un)soundness, an inference algorithm,
a complexity analysis), empirically or by substantial experience.
Personal experience is accepted as justification so long as it is
extensive and illustrated with concrete examples.
## Submission details
Submissions must be in the PDF format and have a short summary
(abstract) at the beginning. Submissions in the categories of
Experience Reports, Demos, or Informed Positions should indicate so in
the title or subtitle. The point of the submission should be clear
from its two first pages (PC members are not obligated to read any
further.)
Submissions must be uploaded to the workshop submission website before
the submission deadline.
Only the short summary/abstract of accepted submissions will be
published on the conference website. After acceptance, authors will
have the opportunity to attach or link to that summary any relevant
material (such as the updated submission, slides, etc.)
*Submission website*: https://ml2024.hotcrp.com/
*Workshop website*: https://icfp24.sigplan.org/home/mlworkshop-2024
## Coordination with the OCaml Users and Developers Workshop
The OCaml workshop is seen as more practical and is dedicated in
significant part to OCaml community building and the development of
the OCaml system. In contrast, the ML family workshop is not focused
on any language in particular, is more research-oriented, and deals
with general issues of ML-style programming and type systems. Yet
there is an overlap, which we are keen to explore in various ways. The
authors who feel their submission fits both workshops are encouraged
to mention it at submission time or contact the program chairs.
-- Guillaume Munch-Maccagnoni Researcher at INRIA Gallinette team, Nantes https://guillaume.munch.name/