Rewrite ragged sublibrary using complete v3 VectorOfArray code#559
Merged
ChrisRackauckas merged 4 commits intoSciML:masterfrom Apr 1, 2026
Merged
Conversation
Replace the partial reimplementation with the complete v3 vector_of_array.jl code, mechanically transformed (VectorOfArray → RaggedVectorOfArray, etc.). This preserves ALL v3 behavior exactly: - A[i] returns the i-th inner array - A[:, i] returns inner array without zero-padding - RaggedEnd for per-column `end` resolution - Iteration over inner arrays - Full broadcasting, copy, zero, similar, fill!, push!, etc. Tests are the complete v3 test suite (basic_indexing + interface_tests) with same type renames, plus tests for interp/dense, conversion, and SII. 430 tests pass. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Run each sublibrary's test suite as a separate CI group: - RaggedArrays: RecursiveArrayToolsRaggedArrays (430 tests) - ArrayPartitionAnyAll: optimized any/all (30 tests) - ShorthandConstructors: VA[...]/AP[...] syntax (7 tests) Each group activates the sublibrary's own Project.toml environment, dev's the parent package, and runs Pkg.test(). Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Julia 1.10 has 1 extra allocation in the broadcast path compared to 1.12+. Use <= 1 instead of == 0. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Replaces the partial reimplementation of
RecursiveArrayToolsRaggedArrayswith the complete v3vector_of_array.jlcode, mechanically transformed:VectorOfArrayRaggedVectorOfArrayDiffEqArrayRaggedDiffEqArrayAbstractVectorOfArrayAbstractRaggedVectorOfArrayAbstractDiffEqArrayAbstractRaggedDiffEqArrayWhat this fixes
The previous ragged sublibrary was a partial reimplementation that missed many v3 behaviors. This is now the exact v3 code with renamed types, preserving:
A[i]returns the i-th inner array (not scalar)A[:, i]returns inner array without zero-paddingRaggedEndfor per-columnendresolution (r[end, i]gives last element of columni)_getindexdispatch with symbolic type checkingTests
The complete v3 test suite (
basic_indexing.jl+interface_tests.jl) with same type renames, plus new tests forinterp/densefields, conversion between ragged/non-ragged types, and SymbolicIndexingInterface.430 tests pass.
Addresses feedback from @JoshuaLampert in #547.
🤖 Generated with Claude Code