Last July we recapped the first year of the SciML Small Grants Program: 13 projects initiated, 8 completed, around $2,400-2,600 in payouts. In the ten months since, eight more projects have closed out, several active grants have been claimed, and the project list itself has been refreshed with new high-priority work. This post walks through what's shipped, in the order the completion PRs landed in sciml.ai.
PR #171, merged August 2, 2025.
The "Simple Handwritten PDEs as ODEs" benchmark set had been bit-rotting since the 2022 linear solve syntax migration. Arjit took the project further than the original scope: not only did the benchmarks come back to life on the modern linear solve interface, the four PDE test problems were reformulated as more realistic benchmarks, both finite-difference and pseudospectral implementations were improved, and the new benchmarks were tested against many solvers. The bounty was bumped from the original amount to $400 after discussion with the reviewers, reflecting the expanded scope.
PR #168, merged August 4, 2025.
The DAE benchmark project is structured as $100 per added benchmark, and stays open in the project list so multiple contributors can chip away at the list of standard DAE problems. Jayant added the NAND Gate problem (SciMLBenchmarks.jl PR #1303) in a combined claim-and-completion PR — the work was done before the formal request, so both happened in one merge.
PR #185, merged October 8, 2025.
Julia v1.12 made opaque pointer mode the default and changed Julia pointers to LLVM pointers instead of integers. That broke llvmcalls across the JuliaSIMD ecosystem. Maximilian (a repeat contributor — he also wrapped PyCMA last cycle) updated LoopVectorization.jl and VectorizationBase.jl so the ecosystem keeps working on v1.12 (VectorizationBase.jl PR #121, LoopVectorization.jl PR #557). Funded by an earmarked donation from the JuliaLang project administered through the small grants program.
PR #189, merged October 27, 2025.
The largest single grant in the program's history. EvoTrees.jl's CPU implementation is competitive with XGBoost, but the GPU backend lagged badly. Aditya's work (EvoTrees.jl PR #299) brought training time into the target range against XGBoost on the 1M and 10M observation benchmarks, with partial migration to KernelAbstractions.jl so the path is open for AMD GPU support. The original bounty was $2,000 with a $500 KA.jl premium; the partial KA.jl migration earned an intermediate $250 premium for $2,250 total. This was also a second successful grant for Aditya, who completed the SciPy wrapper earlier in 2025.
PR #207, merged January 6, 2026.
CurveFit.jl sits in an underserved part of the ecosystem — high-level curve fitting — and the existing alternatives (e.g. LsqFit.jl) lean on inefficient and unstable algorithms. CurveFit.jl's NonlinearSolve.jl foundation already fixed the numerical core; this grant filled in the feature gaps tracked in issue #41. This was one of the projects added in the December 2025 high-priority refresh (see below) and was claimed and completed within a month.
PR #211, merged January 26, 2026.
The BSplineInterpolation in DataInterpolations.jl had bugs in control point placement and derivative calculation. The fix (DataInterpolations.jl PR #502) mirrored the approach taken earlier in DataInterpolationsND.jl and re-enabled the derivative tests that had been disabled. Small bounty, but a real correctness fix in a heavily-used SciML package.
PR #227, merged March 13, 2026.
The biggest single push on the open-ended DAE benchmarks project. Across eight SciMLBenchmarks PRs (#1459, #1461, #1480, #1481, #1483, #1484, #1485, #1486), Singh added Slider-Crank, Two-Bit Adding Unit, Fekete, Water Tube, Charge Pump, Car Axis, Andrews' Squeezing Mechanism, and Wheelset — covering mass-matrix, residual DAE, and ModelingToolkit index-reduced formulations, each generating work-precision diagrams. This single project nearly doubled the DAE benchmark coverage in SciMLBenchmarks.
PR #228, merged March 21, 2026.
A larger architecture-and-AD-stack project: add the TabM architecture to NeuroTabModels.jl while migrating off Zygote.jl. The implementation actually went further than the original scope — instead of Flux+Enzyme, the migration landed on Lux.jl and Reactant.jl (PR #25), which fits the SciML stack better, with TabM and the numerical embeddings module added on top (PR #29). This is Aditya's third completed small grant.
Two notable governance / project-list changes since the year-one post:
Project list refresh (PR #191 and PR #192, December 2025). Stale claims were removed and three new high-priority projects were added: GPU CI scripts for SciMLBenchmarks, fixing OrdinaryDiffEq's downgrade tests, and the CurveFit.jl enhancements (which was claimed and completed within five weeks of being posted). The justification in PR #192 is worth quoting:
The GPU benchmarking queue is something we've wanted for at least 5 years. The demand for CurveFit.jl is high but I have been lacking in that space. The downgrade CI is a PITA. Maybe someone wants to just sit down and do it for a small reward.
AI usage policy (PR #214, February 2026). A note was added to the SciML Developer Programs page clarifying that AI usage is allowed but must be disclosed, with undisclosed usage being grounds for disqualification from future programs. The note also makes explicit that the projects on offer have already been attempted with state-of-the-art AI tooling, so a contributor relying on AI alone without expert guidance is unlikely to succeed.
Two of the open-ended, per-unit grant projects that had been on the list since the early days of the program are now done:
DAE Problem Benchmarks ($100/benchmark) — complete. The tracker issue SciMLBenchmarks.jl#359 closed on 2026-03-13 with all 11 listed problems implemented across the lifetime of the program: Marko Polic (Transistor Amplifier), Jayant Pranjal (NAND Gate), and Singh Harsh Rahulkumar (the remaining eight). The three separate archive entries were consolidated into one in PR #238.
OrdinaryDiffEq Solver Set Tableau Refactor ($100/solver set) — partially done, remainder moved to GSoC. The SDIRK set was effectively completed in-tree by Singh Harsh Rahulkumar across a series of PRs in May 2026 (OrdinaryDiffEq.jl#3619, #3620, #3641, #3650, #3654, #3661, #3668), building on Krish Gaur's original scaffolding in #2779. With one set in production and a working pattern established, the remaining sub-packages (LowOrderRK, HighOrderRK, Verner, Feagin, SSPRK, LowStorageRK, SymplecticRK, RKN, FIRK, ExponentialRK) are large enough that they fit better as a single GSoC project than as a stream of per-set bounties, so the small-grant entry was retired.
A stale-claim sweep (PR #235, 2026-05-26) also cleared five expired claim declarations and retired the SciMLBenchmarks GPU CI project from the list, following the pattern established in PR #191.
Three projects are currently on the active list:
LoopVectorization.jl Apple ARM ($200) — open. Follow-up to Maximilian's v1.12 work: get all tests passing on M-series Macs.
OrdinaryDiffEq Downgrade Tests ($100) — open. Making the downgrade-tests CI pass across OrdinaryDiffEq and its sublibraries. PR SciML/OrdinaryDiffEq.jl#3047 (open but stalled with failing tests) is a partial starting point.
CUTEst.jl on the Optimization.jl Interface ($200) — claimed by Prashant Andoriya (PR #236, 2026-05-26 to 2026-06-26). Wrap the CUTEst.jl problem set behind the Optimization.jl interface and add a SciMLBenchmarks loop over it.
The pattern of clearing claim declarations when a window closes without extension is by design — see the Going Over the One-Month Time Budget section of the program page. In most cases the project itself stays on the list and only the claim resets.
Adding the eight completed projects since July 2025:
$400 PDE benchmarks (Seth)
$100 NAND gate DAE (Pranjal)
$200 LoopVectorization v1.12 (Pochapski)
$2,250 EvoTrees.jl GPU (Pandey)
$300 CurveFit.jl (Ristivojevic)
$100 DataInterpolations BSpline (Ojha)
$800 DAE benchmark suite (Rahulkumar)
$1,800 NeuroTabModels.jl TabM (Pandey)
That's $5,950 in additional payouts over ten months, bringing the running total to roughly $8,400-8,600 across the lifetime of the program. The completion mix has also shifted upward — last year's projects averaged in the $200-600 range; the last ten months include two grants over $1,800, reflecting the program's willingness to fund larger architecture-level work where the scope justifies it.
A few patterns worth noting:
Repeat contributors continue to dominate the high end. Aditya Pandey (now three completed grants), Maximilian Pochapski (two), Param Thakkar (two completed), and Jash Ambaliya (one completed) account for a large share of total payouts. The program's design of giving exclusive declared time periods, with extension support, evidently works for sustaining multi-grant contributor relationships.
Open-ended "per-benchmark" projects scale well. The DAE benchmark project was worked by Marko Polic, Jayant Pranjal, and Singh Harsh Rahulkumar across multiple cycles — 10 of the 11 problems on the tracker issue were added through the program (Singh's eight-system push being the single largest contribution), and the issue is now closed.
Scope expansions get rewarded. The PDE benchmark bounty was bumped on completion. The EvoTrees.jl bounty was bumped for partial KA.jl work. The pattern of trusting contributors to push past the original spec and adjusting payment afterward has held up.
The current project list has two unclaimed projects (LoopVectorization Apple ARM and OrdinaryDiffEq Downgrade Tests) with the CUTEst.jl wrapper claimed through June 26. If you want to claim one of the open projects, open a PR against sciml.ai modifying small_grants.md per the declaration instructions.
To support the program financially, donate via NumFOCUS — donations can be earmarked for specific projects with steering council approval, which is how the LoopVectorization.jl Julia v1.12 work was funded.
Thanks to all the contributors above, to the reviewers who shepherded these PRs through, and to NumFOCUS and the SciML donor community for keeping the program funded.