Add public statement to Base.GC#54213
Conversation
2115604 to
a0aa4dc
Compare
|
Maybe skip: and possibly GC.in_finalizer and all related to finalizers? I see finalizers are deprecated in Java, and I didn't even know of those... If it makes sense to drop them, then not expand the API? Are they used in some packages? I actually thought the rest e.g. GC.gc was part of the API already, not objecting to it public, though I'm not sure anyone should really be using it... |
|
From @gbaraldi on slack
This notably does not mean that they are deprecated or are about to be removed. [edit: fixed mention, oops!] |
|
I don't remember having ever talked about finalisers and GC 😳 |
|
It was me :). But yeah, I'd rather not make any finalizer related things public, those are functions that are used mostly internally and should not be trifled with |
| """ | ||
| module GC | ||
|
|
||
| public gc, enable, enable_finalizers, in_finalizer, @preserve, safepoint, enable_logging, logging_enabled |
There was a problem hiding this comment.
| public gc, enable, enable_finalizers, in_finalizer, @preserve, safepoint, enable_logging, logging_enabled | |
| public gc, enable, @preserve, safepoint, enable_logging, logging_enabled |
This now removes the two finalize related things as asked for
| """ | ||
| module GC | ||
|
|
||
| public gc, enable, @preserve, safepoint, enable_logging, logging_enabled |
There was a problem hiding this comment.
I think enable_logging and logging_enabled should maybe not have been made public?
I understand public to be part of the API guarantee?
There was a problem hiding this comment.
Yes, public means that the statements made about those functions in their doc-strings or elsewhere in the non-devdocs manual will continue to hold in all future nonbreaking versions.
help?> GC.enable_logging
GC.enable_logging(on::Bool)
When turned on, print statistics about each GC to stderr.
help?> GC.logging_enabled
GC.logging_enabled()
Return whether GC logging has been enabled via GC.enable_logging.
Notably, the specific statistics printed are not specified in the docstrings.
I'm happy to make a followup PR which clarifies that the statistics might change over time or to simply back out logging altogether if you would prefer.
Backported PRs: - [x] #53665 <!-- use afoldl instead of tail recursion for tuples --> - [x] #53976 <!-- LinearAlgebra: LazyString in interpolated error messages --> - [x] #54005 <!-- make `view(::Memory, ::Colon)` produce a Vector --> - [x] #54010 <!-- Overload `Base.literal_pow` for `AbstractQ` --> - [x] #54069 <!-- Allow PrecompileTools to see MI's inferred by foreign abstract interpreters --> - [x] #53750 <!-- inference correctness: fields and globals can revert to undef --> - [x] #53984 <!-- Profile: fix heap snapshot is valid char check --> - [x] #54102 <!-- Explicitly compute stride in unaliascopy for SubArray --> - [x] #54070 <!-- Fix integer overflow in `skip(s::IOBuffer, typemax(Int64))` --> - [x] #54013 <!-- Support case-changes to Annotated{String,Char}s --> - [x] #53941 <!-- Fix writing of AnnotatedChars to AnnotatedIOBuffer --> - [x] #54137 <!-- Fix typo in docs for `partialsortperm` --> - [x] #54129 <!-- use correct size when creating output data from an IOBuffer --> - [x] #54153 <!-- Fixup IdSet docstring --> - [x] #54143 <!-- Fix `make install` from tarballs --> - [x] #54151 <!-- LinearAlgebra: Correct zero element in `_generic_matvecmul!` for block adj/trans --> - [x] #54213 <!-- Add `public` statement to `Base.GC` --> - [x] #54222 <!-- Utilize correct tbaa when emitting stores of unions. --> - [x] #54233 <!-- set MAX_OS_WRITE on unix --> - [x] #54255 <!-- fix `_checked_mul_dims` in the presence of 0s and overflow. --> - [x] #54259 <!-- Fix typo in `readuntil` --> - [x] #54251 <!-- fix typo in gc_mark_memory8 when chunking a large array --> - [x] #54276 <!-- Fix solve for complex `Hermitian` with non-vanishing imaginary part on diagonal --> - [x] #54248 <!-- ensure package callbacks are invoked when no valid precompile file exists for an "auto loaded" stdlib --> - [x] #54308 <!-- Implement eval-able AnnotatedString 2-arg show --> - [x] #54302 <!-- Specialised substring equality for annotated strs --> - [x] #54243 <!-- prevent `package_callbacks` to run multiple time for a single package --> - [x] #54350 <!-- add a precompile signature to Artifacts code that is used by JLLs --> - [x] #54331 <!-- correctly track freed bytes in jl_genericmemory_to_string --> - [x] #53509 <!-- revert moving "creating packages" from Pkg.jl --> - [x] #54335 <!-- When accessing the data pointer for an array, first decay it to a Derived Pointer --> - [x] #54239 <!-- Make sure `fieldcount` constant-folds for `Tuple{...}` --> - [x] #54288 - [x] #54067 - [x] #53715 <!-- Add read/write specialisation for IOContext{AnnIO} --> - [x] #54289 <!-- Rework annotation ordering/optimisations --> - [x] #53815 <!-- create phantom task for GC threads --> - [x] #54130 <!-- inference: handle `LimitedAccuracy` in `handle_global_assignment!` --> - [x] #54428 <!-- Move ConsoleLogging.jl into Base --> - [x] #54332 <!-- Revert "add unsetindex support to more copyto methods (#51760)" --> - [x] #53826 <!-- Make all command-line options documented in all related files --> - [x] #54465 <!-- typeintersect: conservative typevar subtitution during `finish_unionall` --> - [x] #54514 <!-- typeintersect: followup cleanup for the nothrow path of type instantiation --> - [x] #54499 <!-- make `@doc x` work without REPL loaded --> - [x] #54210 <!-- attach finalizer in `mmap` to the correct object --> - [x] #54359 <!-- Pkg REPL: cache `pkg_mode` lookup --> Non-merged PRs with backport label: - [ ] #54471 <!-- Actually setup jit targets when compiling packageimages instead of targeting only one --> - [ ] #54457 <!-- Make `String(::Memory)` copy --> - [ ] #54323 <!-- inference: fix too conservative effects for recursive cycles --> - [ ] #54322 <!-- effects: add new `@consistent_overlay` macro --> - [ ] #54191 <!-- make `AbstractPipe` public --> - [ ] #53957 <!-- tweak how filtering is done for what packages should be precompiled --> - [ ] #53882 <!-- Warn about cycles in extension precompilation --> - [ ] #53707 <!-- Make ScopedValue public --> - [ ] #53452 <!-- RFC: allow Tuple{Union{}}, returning Union{} --> - [ ] #53402 <!-- Add `jl_getaffinity` and `jl_setaffinity` --> - [ ] #53286 <!-- Raise an error when using `include_dependency` with non-existent file or directory --> - [ ] #52694 <!-- Reinstate similar for AbstractQ for backward compatibility --> - [ ] #51479 <!-- prevent code loading from lookin in the versioned environment when building Julia -->
#51335 for the
Base.GCsubmodule (cc @LilithHafner)This PR marks the following symbols as public:
gc enable enable_finalizers in_finalizer @preserve safepoint enable_logging logging_enabledAll of these have a docstring and seem to be useful for external code.
This PR should be backported to 1.11.