Repository navigation
Caramel 0.16.0
0.16.0 - 2026-10-15
Upgrade notes
frappe db diffnow keeps an index or foreign key whose name SugarORM did not generate and prints a note, where it dropped every undeclared one. A changed index is built under a temporary_swapname, then the old index is dropped and the new one renamed, so a unique index is never missing.belongs_totakeson_delete: :cascade,:restrictor:set_null(ADR 0007).frappe migratecommits each transactional migration with its own journal row instead of one shared transaction, so a failure no longer rolls back the migrations before it. A migration that hitslock_timeoutrolls back and runs again after 1, 2 and 4 s; a fourth timeout stopsmigratewithMigrator::LockTimedOut, which names the migration (ADR 0008).CARAMEL_POOL_SIZE(1 to 32) andCARAMEL_POOL_TIMEOUT(1 to 300 seconds) set the connection pool of every command that opens one, which was fixed at 4 connections and a 5 s checkout wait. An invalid value exits 1 with one line naming it (ADR 0032).- Applications can use
BigDecimal,BigIntandBigRationalin every managed build: the toolchain now bundles GMP 6.3.0, andfrappe buildlinks it statically. Remove any@[Link(ldflags: …)]onLibGMPand any vendoredlibgmp.aan application added for this. - The toolchain changed, so installing this release sets up a new toolchain directory and its first builds start with an empty compiler cache. If you use the editor tools, run
frappe lsp installagain after installing.
Features
- core: read the pool size and checkout timeout from the environment (69d8d1f)
Fixes
- sugar_orm: run each migration in its own transaction and retry lock timeouts (67e4238)
- sugar_orm: keep undeclared indexes and keys SugarORM did not name, and declare ON DELETE (6607cc6)
- sugar_orm: let a rebuilt unique index's swap converge, avoid swap-name collisions, and correct the :set_null wording (8d551d9)
- sugar_orm: never reuse a swap-named index with another definition (b65d20e)
- frappe: link GMP in every managed build, so applications can use BigDecimal (0e8e146)