swh:1:snp:a72e953ecd624a7df6e6196bbdd05851996c5e40

sort by:
Revision Author Date Message Commit Date
6e9831b Merge branch 'master' into vc/ws 03 July 2023, 15:25:52 UTC
8a4ab11 Set `VERSION` to `1.11.0-DEV` (#50314) * Set `VERSION` to `1.11.0-DEV` * move NEWS to HISTORY Co-authored-by: KristofferC <kristoffer.carlsson@juliacomputing.com> 03 July 2023, 11:48:00 UTC
0ba6ec2 Restore link to list of packages in Base docs (#50353) This link used to exist in the docs up to v0.2, but it was removed in e91294f47516787ac8648f59e6c6f1abb9e47557 as it was pointing to a doc page that was removed in ef0c44d0fa865a38aefc26b138367ba6c0b4cda5. This change restores the link in the original place, pointing to the up-to-date location. 03 July 2023, 09:20:58 UTC
43bf2c8 ensure GC_FINAL_STATS is consistent with new page metadata layout (#50374) * ensure GC_FINAL_STATS is consistent with new page metadata layout 02 July 2023, 22:27:41 UTC
ecca2c5 Expose PassBuilder callback registration via C api (#50390) 02 July 2023, 13:10:38 UTC
6336f68 🤖 [master] Bump the Pkg stdlib from 4de1826bc to e8197dd0e (#50388) 02 July 2023, 11:00:42 UTC
36e188f Parse pass options in opt/PassBuilder (#50383) 01 July 2023, 22:40:56 UTC
27e21c8 `hvncat`: Added inbounds annotations that improve performance (#41200) * Added judicious inbounds/inline decorations * add inline to other one * bump * grammar Co-authored-by: Jeff Bezanson <jeff.bezanson@gmail.com> * Remove `@inline` * bump CI * bump CI 2 * Merge fix * Ensure `hvncat_fill!` can't execute when N < 2 * Bounds check in three-arg `hvncat_fill!` * Narrow inbounds * Moved bounds check up --------- Co-authored-by: Jeff Bezanson <jeff.bezanson@gmail.com> 01 July 2023, 12:01:49 UTC
36a39b0 add note to CONTRIBUTING.md about making issues and PR names self explanatory (#50370) 01 July 2023, 10:08:38 UTC
a40dec1 sroa: Mark dead setfields as EFFECT_FREE (#50373) sroa tries to delete any `setfield!` call for allocations that it knows it can remove. However, if it does not know that the type is correct for the allocation, it may not be able to remove the setfield!. If the type later gets improved (e.g. by irinterp), the statement becomes eligible for removal, but it currently requires another sroa pass to actually remove it. Improve that situation my marking such a statement that is known-dead as IR_FLAG_EFFECT_FREE, so if we later also prove it nothrow, it (and the corresponding allocation) immediately become DCE-eligible. 30 June 2023, 21:37:06 UTC
196a5b4 use a single uv_cond_t to coordinate wakeup of GC threads (#50339) * Should avoid going to the kernel multiple times to wake GC threads up. 30 June 2023, 18:45:09 UTC
92437c2 Move ccall tests to node 1 (#50350) The ccall tests seems to be a very common failure point so move it to node 1 because it usually has less maxrss. 30 June 2023, 18:42:26 UTC
8fc641c Fix typos in symmetric eigendecomposition code (#50366) 30 June 2023, 17:58:15 UTC
530113f ensure objects beyond bump allocated region are inserted into the object pool freelist * addresses follow-up comments from #50137, particularly https://github.com/JuliaLang/julia/pull/50137#discussion_r1246964490 30 June 2023, 17:28:25 UTC
934cab6 Add escape hatch to avoid demoting float16 operations for unknown architectures (#50343) 30 June 2023, 16:04:35 UTC
734cafa Remove `new BitCastInst` unless it's in a typed pointer context (#50338) * Add debug_level module flag * Make ptls use IRBuilder * Only use 'new BitCastInst' when we know we are not in opaque pointer mode 30 June 2023, 13:38:59 UTC
b303d0e Also set the nthreads for the threadpools during bootstrap (#50358) 30 June 2023, 13:23:15 UTC
eeb0b69 Fix typos in 2x2 matmatmul (#50362) 30 June 2023, 12:03:38 UTC
0e8af1c AbstractInterpreter: Refactor `abstract_call` to be more overload-friendly (#50355) The existing signature of `abstract_call` can lead to ambiguous method errors when it is overloaded for an external `AbstractInterpreter`. This commit mitigates this issue by narrowing the argument type of `max_methods` from `::Union{Int,Nothing}` to `::Int`. Additionally, it introduces `abstract_call_unknown`, providing a hook for static code analyzers like JET.jl to report unknown calls. 30 June 2023, 04:06:06 UTC
02f80c6 Add docs on task-specific buffering using multithreading (#48542) Co-authored-by: Mason Protter <mason.protter@icloud.com> 30 June 2023, 00:12:42 UTC
3d7aa6e Remove broken conversion of `@fastmath x[i] += 1` (#50347) Fixes #47241 29 June 2023, 19:06:00 UTC
3ddceee Fall bad generated functions back to interpreter (#50348) This fixes #49715. The fix itself is pretty simple - just remove the generator expansion that was added in #48766, but the bigger question here is what the correct behavior should be in the first place. # Dynamic Semantics, generally The primary question here are of the semantics of generated functions. Note that this is quite different to how they are implemented. In general, the way we think about compiling Julia is that there is a well defined set of *dynamic semantics* that specify what a particular piece of Julia code means. Julia's dynamic semantics are generally quite simple (at every point, call the most specific applicable method). What happens under the hood may be quite different (e.g. lots of inference, compiling constant folding, etc), but the compilation process should mostly preserve the semantics (with a few well defined exceptions around floating point arithmetic, effect assumptions, semantically unobservable side effects, etc.). # The dnymaic semantics of generated functions With that diatribe out of the way, let's think about the dynamic semantics of generated functions. We haven't always been particularly clear about this, but I propose it's basically the following: For a generated function: ``` @generated function f(args...) # = generator body =# end ``` this is semantically equivalent to the function to basically the following: ``` const lno = LineNumberNode(@__FILE__, @__LINE__); function f(args...) generator = @opaque @assume_effects :foldable :generator (args...)->#= generator body =# body = generator(Base.get_world_counter(), lno, Core.Typeof.(args)) execute(body, f, args...) end ``` A couple of notes on this: 1. `@opaque` used here for the world-age capture semantics of the generator itself 2. There's an effects-assumption `:generator` that doesn't exist but is supposed to capture the special allowance for calling generators. This is discussed more below. ## Implementing `execute` For a long time, we didn't really have a first-class implementation of `execute`. It's almost (some liberties around the way that the arguments work, but you get the idea) ``` execute_eval(body, f, args...) = eval((args...)->$body)(f, args....) ``` but that doesn't have the correct world age semantics (would error as written and even if you used invokelatest, the body would run in the wrong world). However, with OpaqueClosure we do actually have a mechanism now and we could write: ``` execute(body, f, args...) = OpaqueClosure(body, f)(args...) ``` Again, I'm not proposing this as an implementation, just to give us an idea of what the dynamic semantics of generated functions are. # The particular bug (#49715) The issue in #49715 is that the following happens: 1. A generated function gets called and inference is attempted. 2. Inference attempts to infer the generated function and call the generator. 3. The generator throws an error. 4. Inference fails. 5. The compiler enters a generic inference-failure fallback path 6. The compiler asks for a generator expansion in the generic world (-1) 7. This gives a different error, confusing the user. There is the additional problem that this error gets thrown at compilation time, which is not technically legal (and there was an existing TODO to fix that). In addition to that, I think there is a separate question of whether it should be semantically legal to throw an error for a different world age than the currently running one. Given the semantics proposed above, I would suggest that the answer should be no. This does depend on the exact semantics of :generator, but in general, our existing effects-related notions do not allow particularly strong assumptions on the particular error being thrown (requiring them to be re-evaluated at runtime), and I see no reason to depart from this practice here. Thus, I would suggest that the current behavior should be disallowed and the expected behavior is that the generic fallback implementation of generated functions invoke the generator in the runtime world and expose the appropriate error. # Should we keep the generic world? That does leave the question what to do about the generic world (-1). I'm not 100% convinced that this is necessarily a useful concept to have. It is true that most generated functions do not depend on the world age, but they can already indicate this by returning a value with bounded world range and no backedges (equivalently returning a plain expression). On the other hand, keeping the generic world does risk creating the inverse of the situation that prompted this issue, in that there is no semantically reachable path to calling the generator with the generic world, making it hard to debug. As a result, I am very strongly leaning towards removing this concept, but I am open to being convinced otherwise. # This PR This PR, which is considerably shorter than this commit message is very simple: The attempt to invoke the generator with the generic world -1 is removed. Instead, we fall back to the interpreter, which already has the precise semantics that I want here - invoking the generator in the dynamic world and interpreting the result. # The semantics of :generator That leaves one issue to be resolved which is the semantics of `:generator`. I don't think it's necessary to be as precise here as we are about the other effects we expose, but I propose it be something like the following: For functions with the :generator effects assumption, :consistent-cy is relaxed as follows: 1. The requistive notion of equality is relaxed to a "same code and metadata" equality of code instances. I don't think we have any predicate for this (and it's not necessarily computable), but the idea should be that the CodeInstance is always computed in the exact same way, but may be mutable and such. Note that this is explicitly not functional extensionality, because we do analyze the structure of the returned code and codegen based on it. 2. The world-age semantics of :consistent sharpened to require our relaxed notion of consistency for any overlapping min_world:max_world range returned from the generator. Co-authored-by: Oscar Smith <oscardssmith@gmail.com> 29 June 2023, 18:50:53 UTC
f6f3553 add `Base.isprecompiled(pkg::PkgId)` (#50218) 29 June 2023, 17:15:16 UTC
5db930e optimize: Handle path-excluded `Core.ifelse` arguments (#50312) It's possible for PiNodes to effectively imply statically the condition of a Core.ifelse. For example: ```julia 23 ─ %60 = Core.ifelse(%47, false, true)::Bool │ %61 = Core.ifelse(%47, %58, false)::Union{Missing, Bool} 25 ─ goto #27 if not %60 26 ─ %65 = π (%61, Bool) └─── ... ``` In basic block #26, the PiNode gives us enough information to conclude that `%47 === false` if control flow reaches that point. The previous code incorrectly assumed that this kind of pruning would only be done for PhiNodes. Resolves #50276 29 June 2023, 16:26:51 UTC
6d400e4 Makefile: Add support for symbol versioning (ON by default) (#49012) 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. 29 June 2023, 16:23:36 UTC
6174056 macOS <=10.14: move build flags to OSLIBS (#50017) Replace file src/mach_dyld_atfork.tbd with command line flags Fixes #49976 29 June 2023, 15:52:38 UTC
ad374a0 Merge branch 'master' into vc/ws 29 June 2023, 15:29:47 UTC
e4600c5 Relax constraints on the PHI block (#50308) In #50158, I tought the verifier to reject code that has invalid statements in the original PHI block. In #50235, this required irinterp to stop folding PhiNodes to the respective constants. I said at the time that a subsequent compact would fix it, but it turns out that we don't actually have the logic for that. I might still add that logic, but on the other hand it just seems kinda silly that PhiNodes need to be a special case here. This PR relaxes the semantics of the PHI block, to allow any value-position constant to appear in the PHI block and undoes the irinterp change from #50235. Only the interpreter really cares about the semantics of the phi block, so the primary change is there. Of note, SSAValue forwards are not allowed in the phi block. This is because of the following: ``` loop: %1 = %(...) %2 = %1 %3 = %(top => %1) ``` The two phi values %1 and %2 have different semantics: %1 gets the *current* iteration of the loop, while %3 gets the *previous* value. As a result, any pass that wants to move SSAValues out of PhiNode uses would have to be aware of these semantics anyway, and there's no simplicitly benefits to allowing SSAValues in the middle of a phi block. 29 June 2023, 13:06:27 UTC
7eb358e doc fix for @invokelatest (#50342) 29 June 2023, 06:46:21 UTC
cb6d0f2 invokelatest docs should say not exported before 1.9 (#50341) 29 June 2023, 06:45:08 UTC
cf34aa2 Round-trip reinterpret of all isbits types (#47116) Hiding padding bytes in the process, to avoid undefined behavior if those are observed. Co-authored-by: Andy Ferris <andy.ferris@roames.com.au> Co-authored-by: Jameson Nash <vtjnash@gmail.com> Co-authored-by: Sukera <11753998+Seelengrab@users.noreply.github.com> 29 June 2023, 02:57:40 UTC
663c58d Change SIMD Loop from Fast to only reassoc/contract (#49405) Addresses #49387 Co-authored-by: Mosè Giordano <mose@gnu.org> 28 June 2023, 22:12:17 UTC
4e0da0d fix `compatible_vatuple` (#50331) Seemingly `vab` has been computed wrongly. 28 June 2023, 22:09:56 UTC
d67b899 initialize jl_n_markthreads and jl_n_sweepthreads to be consistent with no parallel GC on bootstrap (#50332) 28 June 2023, 20:25:27 UTC
00191c0 Revert "Add mutating `stat!` function for non-allocating filesystem `stat`" (#50323) 28 June 2023, 20:22:00 UTC
e6d67a7 Merge pull request #50146 from JuliaLang/mg/llvm-ccache [deps] Deal with `USECCACHE=1` in common CMake options 28 June 2023, 18:31:54 UTC
850dd87 Reword "how does Julia define its public API" [NFC] (#50324) 28 June 2023, 16:18:31 UTC
196956d Replace `julia` with Julia in faq when referring to the language. (#50103) 28 June 2023, 11:08:24 UTC
1177b54 Merge pull request #50315 from JuliaLang/pc/fix-mssa-preserve Fix MemorySSA preservation in julia-licm 28 June 2023, 09:46:52 UTC
5c070f4 Rework symmetric generalized `eigen`/`eigvals` (#49673) 28 June 2023, 05:29:00 UTC
014f8de Align meaning for effects and IR flags (#50313) This fixes a longstanding todo where the IR_FLAG_EFFECT_FREE flag actually required both :effect_free and :nothrow. After this PR, it is equivalent to :effect_free only. The mismatch in meaning here caused #50311. `Symbol(::String)` is :effect_free, but not :nothrow. As a result, setting IR_FLAG_EFFECT_FREE on it was not legal. Later, irinterp did discover that it was nothrow and set IR_FLAG_NOTHROW, but did not have sufficient information to know that it was also :effect_free, so it could not set that flag. With this PR, IR_FLAG_EFFECT_FREE is set early in inference, so once irinterp discovers IR_FLAG_NOTHROW, the call becomes DCE-eligible as desired. Fixes #50311. 28 June 2023, 03:44:50 UTC
9dc2991 implement concurrent sweeping (#48969) Implements concurrent sweeping of fully empty pages. Concurrent sweeping is disabled by default and may be enabled through the --gcthreads flag. Co-authored-by: Valentin Churavy <v.churavy@gmail.com> 28 June 2023, 01:25:51 UTC
f5faa08 Fix small bug in memorydef for memset 27 June 2023, 23:16:29 UTC
5ea7f0b Add some memoryssa preservation tests 27 June 2023, 22:49:58 UTC
be1d11a Fix memoryssa preservation bug 27 June 2023, 21:49:58 UTC
ba0e484 Add section about multithreaded linear algebra to performance tips (#50124) * Add section about multithreaded linear algebra to performance tips * Mention linear algebra backends --------- Co-authored-by: Viral B. Shah <ViralBShah@users.noreply.github.com> 27 June 2023, 20:41:56 UTC
290c619 AllocOpt: Handle objref with no preserve_end in a single block. (#50277) This fixes the AllocOpt pass when there is a single block and no gc_preserve_end. The dominator tree traversal now considers the starting (gc_preverse_begin) block as well and does not introduce a lifetime end when there is no gc_preserve_end for the objref. 27 June 2023, 20:21:14 UTC
3b854f4 Fix uniquerep predicate in codegen (#50295) Fixes #50293. This code probably predates us being clear on what the uniquerep predicate is. 27 June 2023, 20:19:43 UTC
0e147eb irinterp: Add handling for :throw_undef_if_not (#50303) This addresses an existing TODO to terminate irinterp on discovering a :throw_undef_if_not that is dead. The underlying infrastructure to do this was added in #49692, so this just needed to be wired up properly. 27 June 2023, 16:13:40 UTC
6f26e4f Throw on non-promotion in fallback `UnitRange` constructor (#50292) * Throw on promotion failure in UnitRange * rename variables 27 June 2023, 13:53:31 UTC
fc8b700 Docs: Bang has other meaning for IO and RNG functions (#50138) * Docs: Bang has other meaning for IO and RNG functions I have seen multiple people ask why functions such as `write` or `rand` does not end with a `!`, given that they mutate the input IO or RNG object. Mention in the style guide that `!` means something slightly different for functions taking IO or RNG arguments. * Update doc/src/manual/style-guide.md Co-authored-by: Thomas Christensen <tchr@mit.edu> * Update doc/src/manual/style-guide.md Co-authored-by: Thomas Christensen <tchr@mit.edu> * Update doc/src/manual/style-guide.md Co-authored-by: Lilith Orion Hafner <lilithhafner@gmail.com> * Increment -> advance --------- Co-authored-by: Thomas Christensen <tchr@mit.edu> Co-authored-by: Lilith Orion Hafner <lilithhafner@gmail.com> 27 June 2023, 12:02:19 UTC
76c906e Remove unnecessary methods for `CartesianIndices` (#50258) * Remove unnecessary methods for CartesianIndices * remove IteratorSize * Add tests 27 June 2023, 04:48:15 UTC
269d350 Remove obsolete admonition from asyncmap docsttring (#50297) 26 June 2023, 18:56:38 UTC
8630576 Reduce memory usage during image build (#50237) 26 June 2023, 16:06:42 UTC
48c92c1 initialize prev_nold and nold in gc_reset_page (#50289) 26 June 2023, 15:29:41 UTC
0d52f8d SROA (mutable): re-compute the type for inserted phi nodes (#50294) Fixes the mutable case of #50285. closes #50285 26 June 2023, 13:21:03 UTC
aa9b9d0 compact: Propagate IR_FLAG_REFINED (#50286) This is a more invasive version of #50281, implementing alternative 2. Because this solves the same problem, the motivation is the same, so quoth much of the commit message: In #49340, I added an ir flag (currently only set by sroa) to allow sparse-reinference of ir after optimization passes that may improve type information. However, as currently implemented, this flag gets dropped when the IR is compacted, defeating the purpose of the flag, because it can no longer be reliably used for sparse re-inference. This commit adds a special `Refined` marker in ssa_rename that lets compact propagate the IR_FLAG_REFINED flag to any users of statements that may have been compacted away. 26 June 2023, 09:36:20 UTC
d01b8cd Add type assertion to inner HermOrSym constructor (#50282) 26 June 2023, 09:06:22 UTC
ed338d0 lattice: Restore `tmerge_fast_path` for optimizer lattice (#50291) This function is slightly misnamed, because, while it does perform some fast pathing, the rest of the tmerge functions assume it has been run. When I removed the OptimizerLattice in #50257, we accidentally lost the call to `tmerge_fast_path` in the optimizer_lattice path, regressing tmerge quality in the optimizer (which admittedly we don't use a lot, but I did just add another use for in #50287). The proper fix is probably to split the tmerge into a helper that always calls the fast path and then delegates to the current implementation for everything else, but for now, just try moving the fast path to the start of the PartialsLattice, which should restore correctness and have reasonable performance, since there's only a handful of pointer checks between the entry to the inference tmerge and the partials lattice. 26 June 2023, 07:27:33 UTC
879f6d4 SROA: re-compute the type for inserted phi nodes (#50287) Fixes the immutable case of #50285. 25 June 2023, 18:12:43 UTC
39a4013 Fix indexing error in TwoPhaseDefUseMap (#50280) There was an off-by-one in the indexing for TwoPhaseDefUseMap, causing def-use chains to not be properly visited. We don't use this functionality much in base, because it's only active for irinterp on functions with loops that were shown to terminate, which the compiler currently does not generally have the power to do, but I saw it in some downstream experiments. 25 June 2023, 16:23:11 UTC
dd1f03d Mild `AbstractQ` review and refactoring (#49714) 25 June 2023, 12:01:20 UTC
5939e2d Improve scalability of page allocator (#50137) Reduces contention in allocation heavy parallel workloads. 25 June 2023, 08:57:17 UTC
406ba12 add handling of `sqrt()` function for empty matrices (#50270) 24 June 2023, 06:15:23 UTC
fdc50d8 Update docstring for `StackFrame.linfo` (#49971) 24 June 2023, 05:59:34 UTC
f2c6580 `SuiteSparse_jll`: only`dlopen` the libraries if `Base.USE_GPL_LIBS` is true (#50267) 24 June 2023, 03:42:35 UTC
c59468a Limit memory use during 32bit build (#50272) Co-authored-by: Gabriel Baraldi <baraldigabriel@gmail.com> 24 June 2023, 00:52:11 UTC
7b565e3 Run llvmpasses tests with opaque pointers (#50266) 23 June 2023, 21:25:09 UTC
85f19de Document JULIA_CPU_TARGET in environment-variables.md (#50147) 23 June 2023, 18:05:02 UTC
c0f623d Small fix to running-external-programs.md (#50220) The `run` method no longer throws an `ErrorException` on failure. It currently throws a `ProcessFailedException`. 22 June 2023, 21:34:20 UTC
d138701 Merge pull request #50264 from JuliaLang/kp/fix-full-build Fix `-full` tarball 22 June 2023, 19:58:57 UTC
7785db7 Check that we don't name LLVM constants (#50263) 22 June 2023, 17:43:50 UTC
a8d76c6 typeintersect: fix `constraintkind` for non-covariant var (#50209) Co-authored-by: Jameson Nash <vtjnash+github@gmail.com> 22 June 2023, 16:20:54 UTC
07f0525 Tweak cache pidlocking pt. 2 (#50254) 22 June 2023, 16:20:10 UTC
ec33194 Remove type_lift_pass!/OptimizerLattice (#50257) This pass (which has become somehwat misnamed) was inserting error checks, both for undefined slots and undefrefs from sroa'd getfields (at least in theory - this broke at some point - see #50250). It accomplished this partly by using the OptimizerLattice, which adjoins the `MaybeUndef` lattice element to the ordinary incidence lattice. This lattice element indicates that the SSAValue may potentially have come from an undef slot and gives it special semantics inside `:isdefined` and `:undefcheck`. However, in our more recent formalization of lattices, this element is ill-defined. It is not valid to widen it, because doing so would change semantics and cause crashes. It would be possible to have a correct version of this element, but it would require inverting the meaning (i.e. having all types be maybe-undef and using a NotUndef lattice element). However, such a change would be expensive and not worth it. This has been causing me some headaches downstream when trying to use custom lattices and custom pass pipelines, so I had some extra motivation to do something about it. This PR just does away with all this complexity. SSA conversion and SROA now directly insert the requisite `:throw_undef_if_not` checks. This does increase the size of the IR somewhat earlier in the pipeline, but on the other hand it saves a full scan over the IR later in the pipeline, so it's probably a was overall. While we're here, we fix #50250 by properly inserting the requistie phi nest inside SROA. 22 June 2023, 16:04:24 UTC
330c79d Add note to `load_path` docstring stating that it is not safe to mutate its return value (#50233) 22 June 2023, 15:39:15 UTC
ef6d900 codegen: handle dead code with unsafe_store of FCA pointers (#50164) Fix #50125 22 June 2023, 14:17:35 UTC
8af82ea Set `CMAKE_INSTALL_LIBDIR` for non-Windows platforms This makes it so libgit2.so and libssh2.so go into `usr/lib` where they should be, rather than into `usr/lib64` on some platforms. 22 June 2023, 14:01:32 UTC
49ac54a Fix ITTAPI for offline build of LLVM 22 June 2023, 14:01:16 UTC
ad120f4 Fix jl_gc_internal_obj_base_ptr segfault regression (#50231) The function `jl_gc_internal_obj_base_ptr` takes a pointer and tries to determine if it is a valid object pointer. As such it has to carefully validate all data it reads, and abort whenever there are obvious inconsistencies. This patch adds a check which aborts when `meta->osize` is zero, just before we perform a division-with-remainder by this value, thus avoiding a potential division-by-zero exception. This fixes a crash we are seeing in our code. The crash did not happen before PR #49644 was merged because back then there was a check for `meta->ages` not being zero, which apparently was enough to detect invalid values for `meta` (e.g. when `meta` points into a null page). 22 June 2023, 13:45:44 UTC
de7670e Correct the documentation for `pkgdir`. (#50255) 22 June 2023, 12:58:54 UTC
a34ff20 allow `Meta.parse` to take optional `filename` argument (#50224) Code analysis tools such as JET.jl use `Meta.parse` to get a Julia code representation from textual data, or to display diagnostic messages when the input data is invalid. In such scenario it would be beneficial if these diagnostic messages could refer to the original file name of the input data. This commit allows `Meta.parse` to accept the optional `filename::AbstractString` argument for this purpose. If an error occurs, the `filename` can be included in the diagnostic information. The default value is set to `"none"`, thus preserving existing behavior. 22 June 2023, 06:15:33 UTC
fbb8d6c Bump JuliaSyntax to 0.4.5 (#50253) Fixes an issue with error formatting in Meta.parse with nontrivial starting indices (#50245) 22 June 2023, 00:28:30 UTC
e7d00e1 [LibGit2] fix wrong definition of ConfigStruct (#50247) 21 June 2023, 23:41:04 UTC
8d0d012 Merge pull request #50208 from giordano/mg/external-llvm-patches [build] Allow automatically applying Julia's patches to LLVM source 21 June 2023, 16:13:02 UTC
4f0216a Clear specsigflags correctly for copied code instance (#50238) As provided by Jameson to fix an issue encountered in a downstream project. Co-authored-by: Jameson Nash <vtjnash@gmail.com> 21 June 2023, 11:26:54 UTC
94dd5cf compiler: add few more type annotations (#50242) 21 June 2023, 11:26:36 UTC
95749c3 Avoid creating invalid PhiNodes in IR passes (#50235) As of #50158, irverify catches cases where PhiNodes show up in the middle of a basic block (which is illegal). Unfortunately, it turns out there were two cases in Base, where we created just such code: 1. When cfg_simplify! merged basic blocks, it didn't bother to delete (resp, replace by the one incoming edge) the PhiNodes in the basic block it was merging. 2. In irinterp we try to delete instructions that result in constants. This is not legal if the instruction is a PhiNode. The second of these is somewhat unfortunate, but any subsequent compaction will of course take care of it, so I don't think it's a huge issue to just disable the replacement. 21 June 2023, 00:52:53 UTC
71a6a32 Merge pull request #50240 from fingolfin/patch-1 LICENSE.md: update copyright years 20 June 2023, 21:51:58 UTC
5098646 LICENSE.md: update copyright years 20 June 2023, 21:47:24 UTC
a40cb96 Merge pull request #50162 from topolarity/dlfind-search-order Lookup libraries in `libjulia-*` before `jl_exe_handle` 20 June 2023, 20:00:20 UTC
4195a0e Merge pull request #50232 from JuliaLang/sf/dont_precompile_multiple_modules_into_a_ji_file Throw precompilation error if dependency load failure during incremental precompilation 20 June 2023, 19:24:21 UTC
9032926 Throw precompilation error if dependency load failure during incremental precompilation In rare cases, if we fail to load a dependency during precompilation, we can fall-through to the "load locally" fallthrough in `_require()`. However, if this happens during incremental precompilation, this ends up emitting `.ji` files that have multiple modules embedded within, which can cause massive precompilation issues further down the chain, as dependencies which try to load our `.ji` file themselves get corrupted. This catches the error at the source, refusing to generate such a `.ji` file in the first place. 20 June 2023, 17:05:58 UTC
a8ef873 Merge pull request #50230 from JuliaLang/kf/dontreversecache Don't reverse! load_path cache 20 June 2023, 16:59:54 UTC
e2b0f66 Merge branch 'master' into dlfind-search-order 20 June 2023, 14:57:04 UTC
d48e17b Don't reverse! load_path cache As noted in https://github.com/JuliaLang/julia/pull/50119#discussion_r1235329616. 20 June 2023, 14:50:59 UTC
a74e9f9 Install `libclang_rt.asan-<arch>` properly 20 June 2023, 06:05:04 UTC
0da46e2 Name LLVM variables from codegen (#50094) 20 June 2023, 02:23:18 UTC
0374d65 Use IntrusiveLinkedListSynchronized as Workqueue 20 June 2023, 01:37:26 UTC
489e19d modify illegally to use sentinel values 19 June 2023, 23:51:22 UTC
back to top