[JuliaLowering] Ask Nanosoldier what he thinks - #61576
Conversation
6b7799a to
4cead29
Compare
#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"`.
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"`.
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"`.
|
Expecting a bloodbath, @nanosoldier |
|
The package evaluation job you requested has completed - possible new issues were detected. Report summary❗ Packages that crashed6 packages crashed only on the current version.
2 packages crashed on the previous version too. ✖ Packages that failed6401 packages failed only on the current version.
1060 packages failed on the previous version too. ✔ Packages that passed tests2 packages passed tests only on the current version.
2279 packages passed tests on the previous version too. ~ Packages that at least loaded1152 packages successfully loaded on the previous version too. ➖ Packages that were skipped altogether47 packages were skipped only on the current version.
897 packages were skipped on the previous version too. |
|
That's not too bad! only 3243 precompile failures... |
|
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. |
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.
…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.
|
@nanosoldier |
|
The package evaluation job you requested has completed - possible new issues were detected. Report summary❗ Packages that crashed22 packages crashed only on the current version.
98 packages crashed on the previous version too. ✖ Packages that failed4730 packages failed only on the current version.
1193 packages failed on the previous version too. ✔ Packages that passed tests6 packages passed tests only on the current version.
3084 packages passed tests on the previous version too. ~ Packages that at least loaded1 packages successfully loaded only on the current version.
1848 packages successfully loaded on the previous version too. ➖ Packages that were skipped altogether21 packages were skipped only on the current version.
903 packages were skipped on the previous version too. |
|
@nanosoldier |
|
The package evaluation job you requested has completed - possible new issues were detected. Report summary❗ Packages that crashed36 packages crashed only on the current version.
140 packages crashed on the previous version too. ✖ Packages that failed3498 packages failed only on the current version.
1813 packages failed on the previous version too. ✔ Packages that passed tests4 packages passed tests only on the current version.
3401 packages passed tests on the previous version too. ~ Packages that at least loaded3 packages successfully loaded only on the current version.
2151 packages successfully loaded on the previous version too. ➖ Packages that were skipped altogether10 packages were skipped only on the current version.
890 packages were skipped on the previous version too. |
|
@nanosoldier |
|
The package evaluation job you requested has completed - possible new issues were detected. Report summary❗ Packages that crashed10 packages crashed on the previous version too. ✖ Packages that failed4797 packages failed only on the current version.
1486 packages failed on the previous version too. ✔ Packages that passed tests1 packages passed tests only on the current version.
3014 packages passed tests on the previous version too. ~ Packages that at least loaded1 packages successfully loaded only on the current version.
1798 packages successfully loaded on the previous version too. ➖ Packages that were skipped altogether7 packages were skipped only on the current version.
918 packages were skipped on the previous version too. |
|
huh.. |
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. |
|
@pkgeval |
|
@mlechu: run Full report: https://pkgeval-reports.julialang.org/?run=gh-5241627143 |
More pkgeval findings from #61576. Fixes JuliaLang/JuliaLowering.jl#186. --------- Co-authored-by: Shuhei Kadowaki <aviatesk@gmail.com>
|
@pkgeval |
|
@mlechu: run Full report: https://pkgeval-reports.julialang.org/?run=gh-5458342617 |
|
@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"]) |
|
@mlechu: run Full report: https://pkgeval-reports.julialang.org/?run=gh-5481033751 |
|
Good number, but
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.
found in RuntimeGeneratedFunctions
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).
a48aacd to
482aa2e
Compare
My guess is that it is (just) the package precompilation issues PkgEval has. |
|
@pkgeval |
|
@mlechu: run Full report: https://pkgeval-reports.julialang.org/?run=gh-5498668952 |
|
Bad number, but looks like infrastructure flakiness. After giving this to my strongest robot, I realize we're ignoring module-level |
No description provided.