A fast, friendly, functional language. https://roc-lang.org
Find a file
Richard Feldman 5d5814653c
Fix match expression memory issues and implement tuple decref
This commit addresses two critical issues in the interpreter's match
expression handling:

1. Stack corruption in match expressions: The scrutinee's stack-allocated
   header was being corrupted when pattern match bindings allocated new
   stack space, reusing the same memory. Fixed by using pushCopy to
   allocate a fresh stack location for the scrutinee, protecting it from
   corruption during pattern matching.

2. Missing tuple element cleanup: StackValue.decref had no case for
   .tuple layout tags, causing it to skip cleanup entirely. This meant
   refcounted elements inside tuples (lists, strings, boxes, etc.) were
   never being decref'd. Added proper tuple decref logic that iterates
   through tuple elements and decrefs each one, similar to record handling.

The "match list pattern destructures" test now passes, though there are
still memory leaks from list allocations that need further investigation.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-20 01:13:24 -05:00
.cargo Fix some tests 2025-01-10 20:49:53 -05:00
.devcontainer used roc image for devcontainer 2025-01-07 23:07:29 +00:00
.github Check all defined tests are actually run + fixes (#8375) 2025-11-11 18:54:17 +01:00
.reuse s/rtfeldman/roc-lang/g in links to GitHub repos 2022-08-12 15:24:09 -04:00
ci WIP Fix unification custom type + actually run tests (#8376) 2025-11-11 21:12:55 +01:00
crates update docs Encode Decode (#8366) 2025-11-10 10:36:01 +01:00
design glossary: type signature + typos upgrade (#7776) 2025-05-07 17:35:56 +02:00
devtools Update debug_tips.md (#8127) 2025-07-28 15:37:19 +02:00
docker ditch old_linux + references (#7639) 2025-02-26 12:22:07 +01:00
examples correct link 2025-03-31 18:26:20 +02:00
nix add licenses subcommand (#7787) 2025-05-17 10:30:41 +02:00
src Fix match expression memory issues and implement tuple decref 2025-11-20 01:13:24 -05:00
test More number fixes 2025-11-20 00:06:05 -05:00
.gitattributes add snapshots to .gitattributes 2025-06-16 12:44:19 +02:00
.gitignore Revert .gitignore 2025-11-09 20:18:55 -05:00
.llvmenv start with flake updates 2024-07-28 15:55:36 +10:00
.rules update .rules (#8379) 2025-11-13 19:52:34 +01:00
AGENT.md wip 2025-07-04 21:59:03 -04:00
authors Lowercased some files (#7713) 2025-03-24 16:43:18 +01:00
build.zig zig build minici (#8392) 2025-11-18 11:08:59 -05:00
build.zig.zon Simplify DecompressingHashReader 2025-10-21 15:32:53 +00:00
BUILDING_FROM_SOURCE.md Update Zig version from 0.15.1 to 0.15.2 2025-10-31 18:21:26 +01:00
Cargo.lock Bump tracing-subscriber from 0.3.19 to 0.3.20 (#8232) 2025-09-06 18:00:22 +00:00
Cargo.toml Bump tracing-subscriber from 0.3.19 to 0.3.20 (#8232) 2025-09-06 18:00:22 +00:00
code_of_conduct.md Lowercased some files (#7713) 2025-03-24 16:43:18 +01:00
CONTRIBUTING.md better error msg when no main.roc (#8251) 2025-09-29 19:02:26 +02:00
default.nix don't use flakehub input for flake-compat and update a comment 2023-11-15 23:30:15 -05:00
flake.lock nix flake cleanup (#7576) 2025-02-04 19:05:57 +01:00
flake.nix website has moved to https://github.com/roc-lang/www.roc-lang.org (#8094) 2025-07-22 18:53:15 +02:00
Glossary.md Update Glossary.md 2025-08-12 17:39:21 +10:00
legal_details Lowercased some files (#7713) 2025-03-24 16:43:18 +01:00
LICENSE Use © instead of (c) for copyright symbol 2021-05-03 21:18:36 -04:00
mlc_config.json ignore local html files 2023-08-02 11:28:20 +02:00
POLY_REMOVAL_FAILURES.md Add comprehensive failure analysis for poly removal 2025-11-18 19:15:58 -05:00
POLY_REMOVAL_PLAN.md Update poly removal plan: interpreter defaults to Dec instead of requiring test annotations 2025-11-18 11:14:32 -05:00
README.md Update sponsors in readme 2025-07-14 11:24:45 -04:00
rust-toolchain.toml glossary: type signature + typos upgrade (#7776) 2025-05-07 17:35:56 +02:00
shell.nix feat(nix): make buildRocPackage fetch dependencies recursively (#7729) 2025-04-18 20:11:09 +02:00
typos.toml more Result>Try updates (#8382) 2025-11-14 17:10:55 +01:00
version.txt Restore version.txt 2025-08-11 22:52:07 -04:00

Work in progress!

Roc is not ready for a 0.1 release yet, but we do have:

If you'd like to contribute, get started here. Don't hesitate to ask for help on our group chat, we're friendly!

Sponsors

You can 💜 sponsor 💜 Roc on:

We are very grateful for our corporate sponsors Lambda Class, ohne-makler, and Decem:

Lambda Class logo      ohne-makler logo      Decem logo

If you would like your company to become a corporate sponsor of Roc's development, please DM Richard Feldman on Zulip!

We'd also like to express our gratitude to our generous individual sponsors! A special thanks to those sponsoring $25/month or more:

Thank you all so much for helping Roc progress!