| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | | | | |
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Document that Sys.rename works on directories too
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
Fix #11934 with more conservative Weak.get_copy
|
| | | | | | | |
|
| | | | | | | |
|
| | | | | | | |
|
| | | | | | | |
|
| | | | | | | |
|
| | | | | | | |
|
|\ \ \ \ \ \ \
| |_|_|_|/ / /
|/| | | | | | |
runtime events consumer: fix invalid value returned from runtime_events_read_poll
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
runtime_events_read_poll
|
| | | | | | | |
|
| | | | | | | |
|
|/ / / / / / |
|
| | | | | |
| | | | | |
| | | | | | |
`make -j` is now used by default in all opam installs, it should be fine for clean builds
|
|\ \ \ \ \ \
| |_|_|/ / /
|/| | | | | |
No reified var counter
|
| | | | | | |
|
| | | | | | |
|
|/ / / / / |
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Format.sprintf -- direct users to asprintf if they have %a in the format string
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
format string
|
| | | | | |
| | | | | |
| | | | | | |
Signed-off-by: Paul-Elliot <peada@free.fr>
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
interruptible compare.c
|
| | | | | | | |
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Co-authored-by: eutro <git@eutro.dev>
Co-authored-by: Xavier Leroy <xavier.leroy@college-de-france.fr>
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
The previous stack-push code would increment the stack pointer before
writing the new element, so the very first slot was never used.
This is slightly inefficient and makes registering the compare stack
as GC roots weird (we would have to start at 1).
|
|/ / / / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
To compare same-size blocks containing values, do_compare_val recursively
compares the first argument of each block, and pushes "the rest of the
arguments' on both sides to the compare stack. The compare stack thus
contains pairs of sequences of arguments to be compared.
Before this PR, pairs of sequences of arguments are represented by:
- two inner pointers (into the parent blocks) to the first arguments
to be compared on each side
- a "count" field remembering the number of arguments still to compare
The use of inner pointers that are not valid OCaml values makes some
things delicate, for example we could not ask the GC to scan the
compare stack (as is being considered in the context of # 12039).
After this PR, pairs of sequences of arguments are represented by:
- pointers to the parent containing blocks on each side
(that is, valid OCaml values)
- an "offset" field remembering the offset of the next argument to
compare, stored as a tagged OCaml integer
- a "size" field remembering the size of the two blocks,
store as a tagged OCaml integer
At this point, the compare stack contains only valid OCaml values and
could be registered as a single block of local GC roots.
Note: storing the size is superfluous as the size can also be computed
from the blocks themselves (bit-shifting on the header value). In our
tests, storing the size and comparing directly against it noticeably
improves performance on some architectures (a 10-20% different on
compare microbenchmarks). The cost is to use 4 words per element
instead of 3.
|
| | | | | | |
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
Fix dune build of stdlib
|
| |/ / / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Remove awful hacks now that 5.0 has been released.
Signed-off-by: Antonin Décimo <antonin@tarides.com>
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
ocamldoc: modernize doctype to avoid quirk mode
|
| | | | | | | |
|
|\ \ \ \ \ \ \
| |/ / / / / /
|/| | | | | | |
Fix ocamldep after value binding parsetree change
|
|/ / / / / / |
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | | |
Add test case demonstrating that an error in Typetexp can be reached.
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
The error in question is at the end of globalize_used_variables.
|
|\ \ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
AFL dynamic allocation
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
Instrumented code produced by `ocamlopt -afl-instrument` but not run
under AFL needs a 64 k dummy buffer at run-time.
Before, this buffer was allocated statically, and therefore present in all
ocamlopt-generated executables, whether compiled with `-afl-instrument`
or without, whether AFL was selected at configuration-time or not.
This commit implements dynamic allocation of the AFL buffer the first time
an AFL-instrumented module runs its initialization code.
It is based on the proposal at #10167 and its discussion.
Fixes: #10117
Closes: #10167
|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
Ensures that trunk compiles again in -with-afl mode.
|
| |_|/ / / / /
|/| | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
* Add interesting first-class module typing tests
Some of these tests' error messages change in this PR. Some of them
failed at various points when working on this PR.
* Remove elaboration of module unpacks
* Remove dead code
There are two pieces of now-dead code we can remove
- A way of suppressing unused module warnings in `when` guards
when the modules were introduced via module unpackings
- A way of ensuring that first-class module unpacks are pushed
under optional defaulting
* Add a comment for (module _) patterns
* Refactor to remove `type_unpacks`
This is a refactor to avoid the need to wrap typechecking the
extent of a module unpack in the `type_unpacks` function.
Now you call `add_module_variables` to add the (typechecked)
module bindings to the environment before calling `type_expect`
on the extent; this is more similar to how we add variable bindings
to the environment.
* Rename `to_unpack` to `module_variable`
This makes the similarity between `pattern_variable` and
unpacked module variables more apparent. The code is already
parallel; this change makes the names more parallel, too.
* Check escape via let defs, not just bound vars
Stick closer to the old behavior by checking type escape
via `E1` in `let P = E1 in E2`. This patch previously just
checked via the variables bound in `P`. It's closer to
the old implementation to check `E1`.
|
|\ \ \ \ \ \ \
| | | | | | | |
| | | | | | | | |
Fix off-by-one in debug runtime
|
| | |/ / / / /
| |/| | | | |
| | | | | | |
| | | | | | | |
swept block
|
|\ \ \ \ \ \ \
| |/ / / / / /
|/| | | | | | |
caml_update_dummy: do not try to update size-0 atoms
|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
fixes #12153
Suggested-by: Xavier Leroy <xavier.leroy@college-de-france.fr>
Suggested-by: Vincent Laviron <vincent.laviron@gmail.com>
Reported-by: Nick Roberts <nroberts@janestreet.com>
|
|\ \ \ \ \ \ \
| |/ / / / / /
|/| | | | | | |
Revert "Use ocamlyacc's support for OCaml-style comments"
|
|/ / / / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
This reverts commit 514a830eae3991aec12146d3f6aeff3aa2d8406a.
> The dune build system for the OCaml compiler is morally a hack, it
> uses the tools from the ambient opam switch to build the compiler
> codebase -- which can break whenever the compiler distribution has
> more recent tools than the opam switch, and uses the more recent
> features in its own codebase.
> This is what is going on here: @DemiMarie introduced a new ocamlyacc
> feature, and also started using it in the compiler codebase in the
> non-essential commit 514a830. If we want dune to work well, a
> reasonable solution is to revert 514a830 for now, and wait until the
> next OCaml version is released (with the new ocamlyacc feature) to
> merge it again. At this point the dune build will be possible with
> the most recent OCaml release as your opam switch.
from Gabriel Scherer,
https://github.com/ocaml/ocaml/pull/11718#issuecomment-1475338016
|