Skip to content

0.2.0 — Native particles

Latest

Choose a tag to compare

@twhitt14 twhitt14 released this 28 Oct 22:28

Native particles are now PaperConfetti’s default renderer, with 3D tumble and flat appearances. Existing pop() calls continue to work.

confetti.pop() // 3D tumble
confetti.pop(configuration: .init(appearance: .flat))

Changes

  • Independent parabolic rise/fall timing and a softly scattered blast edge.
  • Varied cached starting orientations, shapes, colors and spins.
  • Staged, pre-rolled launch clocks avoid brief cell birth windows during large burst preparation; cancellation also cancels pending launches.
  • Updated example with a 3D/Flat picker and deliberate stress controls up to 5,760 pieces.
  • SpriteKit/atlas experiments removed. Benchmarks exercise the shipping native implementation and retain a frozen 0.1 layer baseline.
  • Expanded one-command physical profiling and visual-review tools, with local results and no package runtime dependencies.

Compatibility and validation

Requires iOS/iPadOS 16+ and Swift tools 5.9+. The method-based SwiftUI/UIKit API remains source-compatible; seeded trajectories intentionally change to the new flight model. Requests are capped at 6,000 particles as a safety bound, not a recommended workload.

Validation covers nine macOS physics tests, 18 iOS package tests, three example UI tests, ten numerical benchmark tests, 33 Python tests, profiling/study smoke tests, Release builds and DocC. The final native implementation passed all three physical iPhone pixel regression tests: repeated five-cannon 5,760-piece emission including a delayed commit, the 5,760-position grid, and the deliberately expired-window negative control with a live reference. Earlier native builds also completed a 12-trial 720/5,760-piece app-only screen. No new physical performance percentage or Instruments hitch result is claimed for the final startup refinement. These are correctness checks on the tested device, not a universal FPS or exact-count guarantee. Native emission is rate-based.

Hosted CI and exact-tag installation verification are recorded below. See VALIDATION.md for scope and evidence. Historical 0.1 CPU comparisons are explicitly labeled and are not claims about the new renderer.

Release verification

  • Successful full preflight on Xcode 16.4 and 26.6 at the exact tagged commit d19d55ed92bea23e6871905a9a2cb190f7c7f8e1.
  • Main CI and tag CI could not start because GitHub reported an account payment/spending-limit block. The owner explicitly approved this release using the successful checks on the identical commit; these blocked runs are not reported as passing.
  • Fresh SwiftPM consumer resolved exact version 0.2.0 to that commit and passed module, default 3D, flat, seeded-trajectory and 5,760-count checks. Bundled attribution matches the source notice.
  • Repository visibility remains private; access is required to resolve the package. No Wordie or App Store deployment is part of this package release.