Skip to content

[JuliaLowering] Ask Nanosoldier what he thinks - #61576

Draft
mlechu wants to merge 13 commits into
JuliaLang:masterfrom
mlechu:jl-pkgeval-fun
Draft

[JuliaLowering] Ask Nanosoldier what he thinks#61576
mlechu wants to merge 13 commits into
JuliaLang:masterfrom
mlechu:jl-pkgeval-fun

Conversation

@mlechu

@mlechu mlechu commented Apr 14, 2026

Copy link
Copy Markdown
Member

No description provided.

@mlechu mlechu added the DO NOT MERGE Do not merge this PR! label Apr 14, 2026
@mlechu
mlechu force-pushed the jl-pkgeval-fun branch 2 times, most recently from 6b7799a to 4cead29 Compare April 14, 2026 16:58
topolarity pushed a commit that referenced this pull request Apr 16, 2026
#61585)

Found precompiling Parsers in
#61576.

Another place the `K"static_eval"` form wasn't quite accurate. In the
first arg of a foreigncall, if it is a tuple, we do want the "no
referencing globals" property of `K"static_eval"`, but we also want it
to be semi-inert: not converted in `est_to_dst`, and not desugared. We
do want the expression to go through scope resolution, though (it's
surprising this works in either lowering implementation). We don't have
a way of converting this hybrid thing to Expr after lowering, so I've
written one. I don't think there's much point in trying to treat this
like it isn't a special case, so I've just called it
`K"foreigncall_arg1"`.
hardikxk pushed a commit to hardikxk/julia that referenced this pull request May 18, 2026
JuliaLang#61585)

Found precompiling Parsers in
JuliaLang#61576.

Another place the `K"static_eval"` form wasn't quite accurate. In the
first arg of a foreigncall, if it is a tuple, we do want the "no
referencing globals" property of `K"static_eval"`, but we also want it
to be semi-inert: not converted in `est_to_dst`, and not desugared. We
do want the expression to go through scope resolution, though (it's
surprising this works in either lowering implementation). We don't have
a way of converting this hybrid thing to Expr after lowering, so I've
written one. I don't think there's much point in trying to treat this
like it isn't a special case, so I've just called it
`K"foreigncall_arg1"`.
mkitti pushed a commit to mkitti/julia that referenced this pull request May 22, 2026
JuliaLang#61585)

Found precompiling Parsers in
JuliaLang#61576.

Another place the `K"static_eval"` form wasn't quite accurate. In the
first arg of a foreigncall, if it is a tuple, we do want the "no
referencing globals" property of `K"static_eval"`, but we also want it
to be semi-inert: not converted in `est_to_dst`, and not desugared. We
do want the expression to go through scope resolution, though (it's
surprising this works in either lowering implementation). We don't have
a way of converting this hybrid thing to Expr after lowering, so I've
written one. I don't think there's much point in trying to treat this
like it isn't a special case, so I've just called it
`K"foreigncall_arg1"`.
@mlechu

mlechu commented May 23, 2026

Copy link
Copy Markdown
Member Author

Expecting a bloodbath, @nanosoldier runtests()

@nanosoldier

Copy link
Copy Markdown
Collaborator

The package evaluation job you requested has completed - possible new issues were detected.
The full report is available.

Report summary

❗ Packages that crashed

6 packages crashed only on the current version.

  • An internal error was encountered: 6 packages

2 packages crashed on the previous version too.

✖ Packages that failed

6401 packages failed only on the current version.

  • Package fails to precompile: 3243 packages
  • Illegal method overwrites during precompilation: 10 packages
  • Package has test failures: 48 packages
  • Package tests unexpectedly errored: 194 packages
  • Package is using an unknown package: 1 packages
  • Tests became inactive: 1 packages
  • Test duration exceeded the time limit: 2671 packages
  • Test log exceeded the size limit: 233 packages

1060 packages failed on the previous version too.

✔ Packages that passed tests

2 packages passed tests only on the current version.

  • Other: 2 packages

2279 packages passed tests on the previous version too.

~ Packages that at least loaded

1152 packages successfully loaded on the previous version too.

➖ Packages that were skipped altogether

47 packages were skipped only on the current version.

  • Package could not be installed: 47 packages

897 packages were skipped on the previous version too.

@oscardssmith

Copy link
Copy Markdown
Member

That's not too bad! only 3243 precompile failures...

@KristofferC

Copy link
Copy Markdown
Member

As long as one core dependency fails (like MacroTools) it will cascade up to a huge number of packages so the actual number doesn't say that much.

topolarity pushed a commit that referenced this pull request Jun 4, 2026
The second bug detected by #61576, and it's a silly one. Empty
identifiers trivially pass the all-characters-are-underscore check, but
we really want them to behave like normal identifiers.

Note flisp hits errors with empty function names (e.g. when checking if
the first char is `'@'`). I don't see any reason to reserve this syntax
(variable and macro names are already allowed to be empty), so I've just
allowed it in JL.

Some of the misc.jl tests were robot-written.
topolarity pushed a commit that referenced this pull request Jun 4, 2026
…ansion (#61922)

Found precompiling JSON in #61576. Given the following macros:

```julia
# these are functionally equivalent
macro old_macro_escaped(x); esc(x); end
JuliaLowering.include_string(Main, "macro new_macro(x); x; end")
```

macro hygiene states that both `x`s below should refer to the same
thing:
```julia
@new_macro let x = 1
    @old_macro_escaped show(x)
end
```

`@new_macro` introduces scope layer `n` and `@old_macro_escaped`
introduces scope layer `o`. We correctly tag the `let` expression and
all subtrees with the base scope layer (1) before `@new_macro` expands,
but we also currently say `@old_macro_escaped` expands atop layer `n`
(and so `esc` takes us `o`->`n`) since it's in the expansion of
`@new_macro`, which is incorrect. The result is that the first `x` in `x
= 1` (scope layer 1) is not the same as the second `x` in `show(x)`
(scope layer `n`). This change expands `@old_macro_escaped` on top of
layer 1 instead of layer `n`, fixing that issue.

Note I've also done some refactoring so we no longer manage the scope
layer as a stack. This makes it easier to manage escaping and gives us a
net deletion of code (as we're already storing the parent layer in the
layer itself).

This area (new macros, old macros, hygiene interop, escaping) could use
a lot more testing. I've added a bunch for identity macros like the ones
above; ideas for more are welcome.
@mlechu

mlechu commented Jun 6, 2026

Copy link
Copy Markdown
Member Author

@nanosoldier runtests()

@nanosoldier

Copy link
Copy Markdown
Collaborator

The package evaluation job you requested has completed - possible new issues were detected.
The full report is available.

Report summary

❗ Packages that crashed

22 packages crashed only on the current version.

  • An internal error was encountered: 22 packages

98 packages crashed on the previous version too.

✖ Packages that failed

4730 packages failed only on the current version.

  • Package fails to precompile: 1391 packages
  • Illegal method overwrites during precompilation: 8 packages
  • Package has test failures: 56 packages
  • Package tests unexpectedly errored: 269 packages
  • Networking-related issues were detected: 1 packages
  • There were unidentified errors: 1 packages
  • Test duration exceeded the time limit: 2354 packages
  • Test log exceeded the size limit: 650 packages

1193 packages failed on the previous version too.

✔ Packages that passed tests

6 packages passed tests only on the current version.

  • Other: 6 packages

3084 packages passed tests on the previous version too.

~ Packages that at least loaded

1 packages successfully loaded only on the current version.

  • Other: 1 packages

1848 packages successfully loaded on the previous version too.

➖ Packages that were skipped altogether

21 packages were skipped only on the current version.

  • Package could not be installed: 21 packages

903 packages were skipped on the previous version too.

@mlechu

mlechu commented Jun 13, 2026

Copy link
Copy Markdown
Member Author

@nanosoldier runtests()

@nanosoldier

Copy link
Copy Markdown
Collaborator

The package evaluation job you requested has completed - possible new issues were detected.
The full report is available.

Report summary

❗ Packages that crashed

36 packages crashed only on the current version.

  • An internal error was encountered: 36 packages

140 packages crashed on the previous version too.

✖ Packages that failed

3498 packages failed only on the current version.

  • Package fails to precompile: 1070 packages
  • Illegal method overwrites during precompilation: 9 packages
  • Package has test failures: 61 packages
  • Package tests unexpectedly errored: 264 packages
  • There were unidentified errors: 1 packages
  • Test duration exceeded the time limit: 1499 packages
  • Test log exceeded the size limit: 594 packages

1813 packages failed on the previous version too.

✔ Packages that passed tests

4 packages passed tests only on the current version.

  • Other: 4 packages

3401 packages passed tests on the previous version too.

~ Packages that at least loaded

3 packages successfully loaded only on the current version.

  • Other: 3 packages

2151 packages successfully loaded on the previous version too.

➖ Packages that were skipped altogether

10 packages were skipped only on the current version.

  • Package could not be installed: 10 packages

890 packages were skipped on the previous version too.

@mlechu

mlechu commented Jul 3, 2026

Copy link
Copy Markdown
Member Author

@nanosoldier runtests()

@nanosoldier

Copy link
Copy Markdown
Collaborator

The package evaluation job you requested has completed - possible new issues were detected.
The full report is available.

Report summary

❗ Packages that crashed

10 packages crashed on the previous version too.

✖ Packages that failed

4797 packages failed only on the current version.

  • Package fails to precompile: 1002 packages
  • Illegal method overwrites during precompilation: 7 packages
  • Package has test failures: 36 packages
  • Package tests unexpectedly errored: 208 packages
  • Networking-related issues were detected: 5 packages
  • There were unidentified errors: 1 packages
  • Tests became inactive: 31 packages
  • Test duration exceeded the time limit: 1406 packages
  • Test log exceeded the size limit: 2101 packages

1486 packages failed on the previous version too.

✔ Packages that passed tests

1 packages passed tests only on the current version.

  • Other: 1 packages

3014 packages passed tests on the previous version too.

~ Packages that at least loaded

1 packages successfully loaded only on the current version.

  • Other: 1 packages

1798 packages successfully loaded on the previous version too.

➖ Packages that were skipped altogether

7 packages were skipped only on the current version.

  • Package could not be installed: 7 packages

918 packages were skipped on the previous version too.

@oscardssmith

Copy link
Copy Markdown
Member

huh..
half of the failures are that the test log is too big. do we have any idea what's causing that?

@mlechu

mlechu commented Jul 5, 2026

Copy link
Copy Markdown
Member Author

do we have any idea what's causing that?

Yes, probably my own attempts to print more stuff on failure, so those should be counted as real failures. Note the increased failures since the last run are expected, since I'm testing some WIP work, and at least two things were fixed on master since the last run.

@mlechu

mlechu commented Aug 10, 2026

Copy link
Copy Markdown
Member Author

@pkgeval runtests() Expecting all failures affecting a large number of packages to be fixed; hoping to collect an accurate number for juliacon

@pkgeval

pkgeval commented Aug 12, 2026

Copy link
Copy Markdown

@mlechu: run gh-5241627143 finished — possible new issues: 446 packages ❌

Full report: https://pkgeval-reports.julialang.org/?run=gh-5241627143
Estimated compute cost: $79.41 (EC2 spot)

topolarity pushed a commit that referenced this pull request Aug 28, 2026
More pkgeval findings from
#61576. Fixes
JuliaLang/JuliaLowering.jl#186.

---------

Co-authored-by: Shuhei Kadowaki <aviatesk@gmail.com>
@mlechu

mlechu commented Aug 28, 2026

Copy link
Copy Markdown
Member Author

@pkgeval runtests()

@pkgeval

pkgeval commented Aug 29, 2026

Copy link
Copy Markdown

@mlechu: run gh-5458342617 finished — possible new issues: 533 packages ❌

Full report: https://pkgeval-reports.julialang.org/?run=gh-5458342617
Estimated compute cost: $34.64 (EC2 spot)

@mlechu

mlechu commented Aug 31, 2026

Copy link
Copy Markdown
Member Author

@pkgeval runtests(["ACETestUtils", "AEMS", "ARCHModels", "ARDESPOT", "AbnormalReturns", "AbstractBayesOpt", "AbstractSDRs", "AcousticMetrics", "AcousticRayTracers", "Acquisition", "AdaptiveRegularization", "AdditiveClosuresForCAP", "AdvancedVI", "AeroTrixi", "AffineMaps", "AlignedSpans", "AmplNLWriter", "Andes", "AntennaPattern", "AnyMOD", "ApproxManifoldProducts", "ArrayAllez", "ArrayInterface", "AsteroidThermoPhysicalModels", "AstroEpochs", "Astroalign", "AsynchronousIterativeAlgorithms", "AtBackslash", "AtomicOrbitalKernels", "Attractors", "AugmentedPoissonBoltzmann", "AutoBZCore", "AutomotiveVisualization", "BLIS", "BSplineKit", "BackwardsLinalg", "BasicBSpline", "BasicPOMCP", "BasinVolumes", "BasisFunctions", "BatchedTransformations", "BayesianLinearRegressors", "Baytes", "BaytesPMCMC", "BeliefGridValueIteration", "BenchmarkEnvironments", "BenchmarkingEconomicEfficiency", "BifrostTools", "Bigleaf", "BinnedModels", "BitPermutations", "BitSAD", "BloodFlowTrixi", "BmlipTeachingTools", "BoundaryValueProblems", "Breakout", "Bumper", "BurrowsWheelerAligner", "CDDLib", "CEEDesigns", "CaNNOLeS", "CalibrationErrorsDistributions", "CallMode", "CameraModels", "CanadianClimateData", "Candela", "CannotWaitForTheseOptimisers", "CassetteBase", "CassetteOverlay", "CatColabInterop", "CausalGraphs", "Cbc", "Celerite2", "CellIA", "ChainRulesCore", "Chamber", "ChargeTransport", "ChemistryLab", "Chess", "Chevrons", "Chron", "ChunkCodecBitshuffle", "CoinbasePro", "CompariMotif", "Compat", "ComponentArrays", "CompositeStructs", "ComputePipeline", "ConceptualClimateModels", "Constraints", "ContrastiveDivergenceRBM", "ControlPlots", "ControllerFormats", "CoordinateTransformations", "Corleone", "CrystalNets", "CumulantsUpdates", "CycleWalk", "DAQP", "DASSL", "DLMReader", "DORASolvers", "DPMMSubClustersStreaming", "DSDP", "DataFrameMacros", "DataPipes", "Debugger", "Defer", "DeprecateKeywords", "DerivableFunctions", "DeterminantalPointProcesses", "DftFunctionals", "Diff3D", "DiffEqCallbacks", "DiffEqPhysics", "DiffImageRotation", "DifferenceEquations", "DifferentiableCollisions", "DiscoDiff", "DiscreteChoiceModels", "DiscreteValueIteration", "DiscreteVoronoi", "DistributedRelaxationTimes", "DynamicalSystemsBase", "EDKit", "EMpht", "EasyABM", "Eegle", "ElectronGas", "EponymTuples", "EquationOfStateRecipes", "EtherSPH", "EvoLinear", "Evolutionary", "ExpressBase", "ExtendableSparse", "F1Method", "FBCModelTests", "FIB", "FMICore", "FNCFunctions", "FSimBase", "FactorLoadingMatrices", "FactoredValueMCTS", "FastClosures", "FastTanhSinhQuadrature", "FermiSea", "Ferrite", "Fides", "FileTrees", "FinEtoolsDeforLinear", "FiniteHorizonPOMDPs", "FiniteHorizonValueIteration", "FixedPointDecimals", "FlagSOS", "FlameGraphs", "FloatTracker", "ForwardBackward", "ForwardMethods", "FourLeafMLE", "FpLinearCategories", "FrankenTuples", "FredData", "FreeGaussianizer", "FreezeCurves", "FrequencySweep", "FunSQL", "FunctionProperties", "FymEnvs", "GCMAES", "GLPK", "GPARs", "GRAPE", "Gaius", "GasChromatographySimulator", "GaussianVariationalInference", "Gen", "GeneExpressionProgramming", "GeneralizedRandomFourierFeatures", "GeneralizedSasakiNakamura", "GenericCharacterTables", "GenericDecMats", "GeoStats", "GeoStatsFunctions", "GeometricKalman", "Geophysics", "GeothermalWells", "GivEmXL", "Glimmer", "GlobalApproximationValueIteration", "GraphKernels", "GraphNets", "Grassmann", "GreedyKernelMethods", "Gremlins", "Groebner", "Gtk", "HTTP", "HarmonicBalance", "Hashids", "HeterogeneousArrays", "HierarchicalGaussianFiltering", "HierarchicalLogging", "HolyMonads", "HydroModelCore", "HydroModelLibrary", "Hygienic", "HypercubeTransform", "HypersurfaceRegions", "HypertextTemplates", "IERSConventions", "IMAS", "IRStructurizer", "IRTools", "ITensorMPOConstruction", "ITensorTDMPO", "ImplicitIntegration", "InPhyNet", "InducingPoints", "InteractiveUtils", "IntrinsicTimescales", "Ipopt", "IsingModels", "IteratorSampling", "JACC", "JWAS", "JetPack", "JolinPluto", "JosephsonCircuits", "JuliaScript", "JupyterPlutoConverter", "KernelSpectralDensities", "KeywordArgumentExtraction", "Khepri", "KhepriAutoCAD", "KhepriBase", "KhepriIllustrator", "KhepriTikZ", "Kirstine", "KiteControllers", "KomaMRICore", "Kroki", "LACosmic", "LLMTextAnalysis", "LandauDistribution", "Lazy", "LazySets", "Lens", "LikelihoodProfiler", "LineSearch", "LinearAlgebraForCAP", "LinearOperators", "LocalApproximationValueIteration", "LocalSearchSolvers", "LoggingCommon", "LogicToolkit", "LoopFieldCalc", "LorentzGroup", "LowRankLayers", "LowerTriangularArrays", "LoweredCodeUtils", "Luximm", "MCMCDiagnosticTools", "MCTS", "MCVI", "MIRTjim", "MLJTestIntegration", "MLJTestInterface", "MLLabelUtils", "MLStyle", "MNPDynamics", "MOMDPs", "MPISchurComplements", "MRIRealign", "MacroEnergyTimeReduction", "MacroTools", "ManifoldGroupTesting", "ManifoldGroupUtils", "ManifoldNormal", "MarSwitching", "MarchingCubes", "MarkdownLiteral", "MarkovGames", "MassSpecChemicals", "Match", "MathML", "MathOptChordalDecomposition", "MatrixNetworks", "MaximumEntropyMomentClosures", "MeijerG", "Memoization", "MetidaBioeq", "MetopDatasets", "MiniEvents", "MinimumVarianceAnalysis", "MixedComplementarityProblems", "MixedModels", "ModeCouplingTheory", "ModelingToolkitParameters", "MolecularGaussians", "MomentMatching", "MomentumED", "MonteCarloSummary", "Moshi", "MotivicHomotopy", "MultiAffine", "MultiAgentSysAdmin", "MultiUAVDelivery", "MutualInformationImageRegistration", "NBodySimulator", "NLLSsolver", "NLPModelsJuMP", "NNParamsPrinter", "NODAL", "NQCDistributions", "NamedPositionals", "NativeSARSOP", "Neo4jQuery", "NeumannKelvin", "NeuralNetworkReachability", "NonCommutativeProducts", "Nonconvex", "NonconvexMetaheuristics", "NonconvexSearch", "NonparametricVI", "Normalization", "ODEInterfaceDiffEq", "OceanGrids", "OctaveH5Reader", "Octavian", "OctofitterRadialVelocity", "OddEvenIntegers", "OhMyThreads", "OndaEDF", "OnlineNMF", "OnlinePCA", "OpenMDAO", "OptimizationFlux", "OrbitPropagationLibrary", "OrdinaryDiffEqDefault", "OrdinaryDiffEqExtrapolation", "PDDL", "PDESystemLibrary", "POMCGraphSearch", "POMCPOW", "POMDPFiles", "POMDPGifs", "POMDPModels", "POMDPSolve", "POMDPTesting", "POMDPTools", "POMDPXFiles", "PackedParselets", "ParallelTestRunner", "ParallelUtilities", "ParameterSchedulers", "ParameterSpacePartitions", "ParameterisedModule", "Parameters", "ParametricMCPs", "ParticleFilters", "Pavito", "Permanents", "PhaseFields", "PhyloCoalSimulations", "PhyloNetworks", "PhysicsInformedRegression", "PlanningDomains", "Plasm", "PlotlyDocumenter", "PlotlyExtensionsHelper", "PlutoArgs", "PlutoDependencyExplorer", "PlutoHooks", "PlutoImageCoordinatePicker", "PlutoMapPicker", "PlutoMathInput", "PlutoPages", "PlutoSplitter", "PlutoStaticHTML", "PlutoStyles", "PlutoTables", "PlutoTurtles", "PlutoUI", "PlutoVista", "PointBasedValueIteration", "PointCloudRegistration", "PointNeighbors", "PointwiseKDEs", "PolaronMobility", "PolyJuMP", "Polynomials4ML", "Postgres", "PrePostCall", "PrettyTables", "PrimitiveOneHot", "ProbabilisticEchoInversion", "ProbabilityTransports", "ProblemReductions", "ProfileEndpoints", "PropDicts", "ProximalPolicy", "PyCall", "QEDevents", "QuadraticModels", "QuantumAlgebra", "QuantumGradientGenerators", "QuantumInputOutput", "QuantumPropagators", "QuartetNetworkGoodnessFit", "QuasiMonteCarlo", "QuditClifford", "QuickPOMDPs", "QuickTypes", "REPL", "RadarData", "RadiationDetectorDSP", "RadiationSpectra", "RadonKA", "RandLinearAlgebra", "RandomFeatureMaps", "RandomFeatures", "RandomWalkBVP", "RayCastWorlds", "Reactive", "ReactiveDynamics", "RecursiveFactorization", "ReinforcementLearning", "ReinforcementLearningBase", "Relief", "ReservoirComputing", "Results", "SARSOP", "SAShE", "SBMLToolkit", "SCS", "SFrontiers", "SIMDMathFunctions", "SNOW", "SPHtoGrid", "SPlit", "SampleChainsDynamicHMC", "SatelliteToolboxPropagators", "ScalarKernelFunctions", "Scanf", "SciMLExpectations", "SciMLIterators", "SciMLJacobianOperators", "Servo", "SimpleI18n", "SimpleLooper", "SimpleSolvers", "SimplicialSets", "SimulationBasedCalibration", "SimulationBasedInference", "SingularSpectrumAnalysis", "SinusoidalRegressions", "SliceSampling", "SmallCombinatorics", "SpeedyWeatherInternals", "SphericalHarmonicExpansions", "SpmImages", "StableHashTraits", "StartUpDG", "StateSpacePartitions", "StaticKernels", "Statistics", "Stipple", "StochParticles", "StructPack", "SubSIt", "SubsidenceChron", "SuperEnum", "SupportPoints", "SurfaceCoverage", "SurrogatesRandomForest", "SurrogatesSVM", "SwitchingControl", "SymbolicCodegen", "SymbolicPlanners", "SymbolicQuartetCF", "SynapseElife", "TabularTDLearning", "Tachikoma", "TagPOMDPProblem", "TaijaData", "Tempus", "TenNetLib", "TensorBinding", "TensorFields", "TensorGames", "TensorKitAdapters", "TensorQEC", "TensorTimeSteps", "Tensorial", "Terrarium", "Terse", "Test", "TimeseriesFeatures", "Tissue", "Tortuosity", "Tracker", "Transits", "TriangularSolve", "Tricks", "TropicalGEMM", "Tulip", "TupleVectors", "TuringCallbacks", "TypeDomainNaturalNumbers", "TypedPolynomials", "UMAP", "URIs", "UnifiedPseudopotentialFormat", "UnitfulChainRules", "UniversalMaterialModel", "VCFTools", "VTKDataTypes", "ValSplit", "VectorizedReduction", "VectorizedStatistics", "VisionTransformers", "VlasovMethods", "VoronoiGraph", "VortexFilaments", "VoxelModel", "VulkanSpec", "WannierExcitonModel", "WeakDepHelpers", "WeightedArrays", "WithAlloc", "WorldOceanAtlasTools", "XCALibre"])

@pkgeval

pkgeval commented Aug 31, 2026

Copy link
Copy Markdown

@mlechu: run gh-5481033751 finished — possible new issues: 215 packages ❌

Full report: https://pkgeval-reports.julialang.org/?run=gh-5481033751
Estimated compute cost: $3.84 (EC2 spot)

@mlechu

mlechu commented Aug 31, 2026

Copy link
Copy Markdown
Member Author

Good number, but

28 now passing, 57 failed on both

What? Did 85 packages start failing on master in the last three days?

`@kwdef` doesn't introduce any new identifiers, so it should be able to escape
    its entire output rather than wrapping (a subset of) individual identifiers.

This is an attempt to avoid porting bugs to JuliaLowering.  If we're lucky, the
     implicit escaping of the stuff `@kwdef` didn't escape is not used by the
     ecosystem.  If not, this PR shouldn't change behaviour in any way.
- Fix an empty triple-quoted string getting the provenance of its contents (an
     empty range) rather than the span of the quotes
- Fix enhanced debuginfo for an empty byte range
This is semantically weird---global methods aren't lifted, and this lifting
     breaks typevar bounds and signatures, and the lifting isn't done for global
     methods, but this appears necessary for performance.
I broke this when reviewing a PR that checked for symbol or identifier, where
     symbol was claude being overly defensive, but I shouldn't have deleted the
     identifier check given that other stuff can go here.
This was incorrect when a variable with the same name as the defined function is
    used in the signature of the function.

Picks a slightly different behaviour for JuliaLang#62941 (assigns unconditionally, not
     just on the first function for that closure), but it wouldn't be too
     difficult to assign only when that closure key hasn't seen an assignment
     yet.

Some tests by robot

Assisted-by: Claude Fable 5
Introduced in JuliaLang#61306, only into JL.  The
     flisp comment implies this is a correctness bug, but I only noticed it
     because of poor performance (debugged by claude).
@KristofferC

Copy link
Copy Markdown
Member

Did 85 packages start failing on master in the last three days?

My guess is that it is (just) the package precompilation issues PkgEval has.

@mlechu

mlechu commented Sep 1, 2026

Copy link
Copy Markdown
Member Author

@pkgeval runtests() A bit of nanosoldier abuse, but the change to closure conversion was nontrivial, and the typeapp fix should get most of the remaining timeout failures

@pkgeval

pkgeval commented Sep 2, 2026

Copy link
Copy Markdown

@mlechu: run gh-5498668952 finished — possible new issues: 354 packages ❌

Full report: https://pkgeval-reports.julialang.org/?run=gh-5498668952
Estimated compute cost: $39.23 (EC2 spot)

@mlechu

mlechu commented Sep 2, 2026

Copy link
Copy Markdown
Member Author

Bad number, but looks like infrastructure flakiness. After giving this to my strongest robot, I realize we're ignoring module-level @nospecialize, but this probably doesn't account for much. (I think/hope it accounts for the slight slowdown in compiling stdlibs, as I know Pkg or REPL or both do this). The number of real failures is closer to 170.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

DO NOT MERGE Do not merge this PR!

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants