Runtime system:

PR#7423, GPR#946: expose new exception-raising functionsvoid caml_{failwith,invalid_argument}_value(value msg)
in addition tovoid caml_{failwith,invalid_argument}(char const *msg).
The previous functions would not free their message argument, so
were inconvient for dynamically-allocated messages; the messages
passed to the new functions are handled by the garbage collector.
(Gabriel Scherer, review by Mark Shinwell, request by Immanuel Litzroth)

Type system:

PR#7414, GPR#929: Soundness bug with non-generalized type variables and
functors.
(compatibility: some code using module-global mutable state will
fail at compile-time and is fixed by adding extra annotations;
see the Mantis and Github discussions.)
(Jacques Garrigue, report by Leo White)

Compiler user-interface and warnings:

PR#7050, GPR#748GPR#843GPR#864: new -args/-args0 <file> parameters to
provide extra command-line arguments in a file -- see documentation.
User programs may implement similar options using the new Expand
constructor of the Arg module.
(Bernhard Schommer, review by Jérémie Dimino, Gabriel Scherer
and Damien Doligez, discussion with Alain Frisch and Xavier Leroy,
feature request from the Coq team)

GPR#933: ocamlopt -p now reports an error on platforms that do not
support profiling with gprof; dummy profiling libraries are no longer
installed on such platforms.
This can be tested with ocamlopt -config
(Sébastien Hinderer)

GPR#1009: "ocamlc -c -linkall" and "ocamlopt -c -linkall" can now be used
to set the "always link" flag on individual compilation units. This
controls linking with finer granularity than "-a -linkall", which sets
the "always link" flag on all units of the given library.
(Xavier Leroy)

GPR#869: Add find_first, find_first_opt, find_last, find_last_opt to
maps and sets. Find the first or last binding or element
satisfying a monotonic predicate.
(Gabriel de Perthuis, with contributions from Alain Frisch, review by
Hezekiah M. Carty and Simon Cruanes, initial report by Gerd Stolpmann)

GPR#999: Arg, do not repeat the usage message thrice when reporting an error
(this was a regression in 4.03)
(Florian Angeletti, review by Gabriel Scherer)

GPR#1042: Fix escaping of command-line arguments in
Unix.create_process{,_env} under Windows. Arguments with tabs should now
be received verbatim by the child process.
(Nicolas Ojeda Bar, Andreas Hauptmann review by Xavier Leroy)

GPR#751, GPR#925: add a HACKING.adoc file to contain various
tips and tricks for people hacking on the repository. See alsoCONTRIBUTING.md for advice on sending contributions upstream.
(Gabriel Scherer and Gabriel Radanne, review by David Allsopp,
inspired by John Whitington)

GPR#939: activate the caml_example environment in the language
extensions section of the manual. Convert some existing code
examples to this format.
(Florian Angeletti)

GPR#1082: clarify that the use of quoted string for preprocessed
foreign quotations still requires the use of an extension node
[%foo ...] to mark non-standard interpretation.
(Gabriel Scherer, request by Matthew Wahab in GPR#1066,
review by Florian Angeletti)

PR#7342, GPR#797: fix Unix.read on pipes with no data left on Windows
it previously raised an EPIPE error, it now returns 0 like other OSes
(Jonathan Protzenko, review by Andreas Hauptmann and Damien Doligez)

GPR#650: in the Unix library, add ?cloexec:bool optional arguments to
functions that create file descriptors (dup, dup2, pipe, socket,socketpair, accept). Implement these optional arguments in the
most atomic manner provided by the operating system to set (or clear)
the close-on-exec flag at the same time the file descriptor is created,
reducing the risk of race conditions with exec or create_process
calls running in other threads, and improving security. Also: add aO_KEEPEXEC flag for openfile by symmetry with O_CLOEXEC.
(Xavier Leroy, review by Mark Shinwell, David Allsopp and Alain Frisch,
request by Romain Beauxis)

Compiler distribution build system: Makefile factorization

The compiler distribution build system (the set of Makefiles used to
build the compiler distribution) traditionally had separate Makefiles
for Unix and Windows, which lead to some amount of duplication and
subtle differences and technical debt in general -- for people working
on the compiler distribution, but also cross-compilation or porting to
new systems. During the 4.05 development period, Sébastien Hinderer
worked on harmonizing the build rules and merging the two build
systems.

Some changes were made to the config/Makefile file which
is exported as $(ocamlc -where)/Makefile.config, and on
which some advanced users might rely. The changes are
as follows:

a BYTERUN variable was added that points to the installed ocamlrun

the PARTIALLD variable was removed (PACKLD is more complete)

the always-empty DLLCCCOMPOPTS was removed

the SHARED variable was removed; its value is "shared" or "noshared",
which duplicates the existing and more convenient
SUPPORTS_SHARED_LIBRARIES variable whose value is "true" or "false".

Note that Makefile.config may change further in the future and relying
on it is a bit fragile. We plan to make ocamlc -config easier to use
for scripting purposes, and have a stable interface there. If you rely
on Makefile.config, you may want to get in touch with Sébastien Hinderer
or participate to PR#7116 (Allow easy retrieval of Makefile.config's values)
or PR#7172 (More information in ocamlc -config).

PR#6594, GPR#955: Remove "Istore_symbol" specific operation on x86-64.
This is more robust and in particular avoids assembly failures on Win64.
(Mark Shinwell, review by Xavier Leroy, testing by David Allsopp and
Olivier Andrieu)

PR#7346, GPR#966: Fix evaluation order problem whereby expressions could
be incorrectly re-ordered when compiling with Flambda. This also fixes one
example of evaluation order in the native code compiler not matching the
bytecode compiler (even when not using Flambda)
(Mark Shinwell, Leo White, code review by Pierre Chambart)

I have a dumb script that add markdown links to the Changelog that I used to build the template for the annotated 4.04 changelog. I plan to do the same for 4.05, but didn't have the time yet. I may edit the top post here with the links added for convenience.

I also expect the new -args/-args0 support (to pass extra options to the compiler in a file, rather than on the command-line, to avoid OS-specific command line size limitations) contributed by Bernhard Schommer to simplify some people's life. It exists now in the OCaml compiler, but the fact that it is in the Arg module in the standard library means that it should be easy for other OCaml programs to also take advantage of it if they wish to.

The -dtimings option tells more about where the compiler spends time (and, pretty soon, memory), which should make it easier to diagnose slow-build issues.

Thanks to Alain Frisch and many others, many stdlib functions have an _opt variant returning an option instead of raising an exception (List.find_opt). New stdlib functions take a bit of time to be adopted, though, as people understandbly want to remain compatible with recent-but-not-last OCaml versions.

François Bobot's Printexc.raise_with_backtrace will make it much easier to catch, report and reraise exceptions in a way that does not break backtrace collection.

Florian Angeletti did a lot of small improvements to the manual and ocamldoc.

Sébastien Hinderer did a lot of internal work on the OCaml compiler build (the configure, Makefile, etc.), which makes it easier to maintain the compiler on Windows, and opens the door to an autoconf/automake approach in the future that could make feature detection more reliable and make porting to new systems easier.

There are not "releases" per se, just opam switches. Feel free to send a pull request to provide the switch with the combination of configure options of your choice.

Note that having frame-pointers should not be necessary for OCaml programs (but it might be useful for certain mixed-language applications that make tooling assumptions?). In particular, if you use them for profiling, perf on Linux supports using DWARF debug information itself to reconstruct backtraces, so perf record --call-graph=dwarf should work -- this is documented in the Performance and profiling page.

I would love to, however, I am bit pre-occupied with a few other things at the moment. So I am not planning on submitting a pull request in the immediate time frame. Possibly after the next few weeks I will come back to this. I will ping you then.