Our docsystem has the ability to install a local working copy of
documenter, complete with manifest/project and local depot to keep
things isolated from user packages. I recently made all of this work out
of tree, and in #58559 added the same mechanism for the installation of
revise in test-revise-*. However, then I realized that the docsystem
also has the ability to install a copy of Reivse. Clearly a third copy
of all of this is excessive. Instead, unify all the manifests into
`deps/jlutilities`, so that the same Revise project/manifest is used for
both doc and test. Similarly, only use one depot at
`buildroot/deps/jlutilities/depot` that both systems share.
- Adds option to enable saving Test.Pass results to DefaultTestSet
(started as https://github.com/JuliaLang/julia/pull/57690 but more
complete here) and enable it when Base.runtests is called when CI=true,
to match when reports are saved
- Stops attributing testset duration to tests from that testset, it
doesn't make sense.
- Make the test name resemble (as far as possible) the original test
call. Making the name independent of test outcome should make it easier
to group tests and identify flaky ones.
- store repeat counts as tags, rather than in the name
- moves the save to inside the test workers, where all test info is
available, and the save can be done in parallel to save time , then
jsons are made at the end and uploaded as an artifact in a tarball
- speed improvements to make saving time acceptable
- fixes a couple of tests that seem to get a little flakier with this
Note on the WeakRef test fix: If a test like `@test x == y` passes, the
`Pass` object retains `x`. Previously to this the Pass object was still
made, but must have been GC-ed immediately. This PR remakes the Pass
object when appending it to DefaultTestSet without the captured data. I
think that just delayed the GC a little to make the test flaky, so I
moved the `@test` to outside the function to avoid capturing `x`.
Also buildkite had to fix an issue to make tests show up properly on our
jobs: https://forum.buildkite.community/t/test-failures-showing-up-in-test-digest-but-not-on-jobs/4306
This enables symbol versioning by default, with the version string
`JL_LIBJULIA_1.10` (the version suffix is the SOMAJOR in general). This
will configure the linker to assign the specified version string to all
Julia-exported symbols.
As part of this change, the SOMAJOR has also been changed to be
MAJOR.MINOR instead of just MAJOR. This is required to allow multiple
minor releases of libjulia to live side-by-side in the same process.
`SYMBOL_VERSION_SUFFIX` is provided to allow appending an additional
unique "salt" to SOMAJOR, which can be helpful for creating template
binaries that will be "version-stamped" after distribution.
Correctly compute `LLVM_SHLIB_SYMBOL_VERSION` using
`llvm-config`, so USE_SYSTEM_LLVM should continue to work.
ccall(:a, B, (C,), d) is now lowered as:
d#1 = cconvert_gcroot(C, d)
Expr(:call, :ccall, :a, B, (C,), cconvert(C, d#1), d#1)
This allows implementation of the special-case ccall lowering logic in Julia
and still create a gcroot for it as needed
the Ref{T} type is the new supertype of Ptr{T}. the ccall emission
turns a Ref{T} into a Ptr{T}, as if the &addressOf operator had been
applied. the specific rules for this will be moved from the current
gist to the documentation at a later point.
source-dist is a make target for creating a standalone tarball that can
be compilled on a system with the requisit external dependencies without
internet access to download the internal dependencies.
rebuilding through stage 0 only when necessary
no longer compiling-in boot.j; just load it (only in stage 0)
removing code no longer needed due to new bootstrapping approach