Repository: codecrafters-io/build-your-own-interpreter
Pull request #95: [Interpreter] CC-1745: Upgrade Bun to v1.2, Rust to v1.86, and Elixir to v1.18
Author: login: andy1li
Created: 2025-05-14T02:01:32Z | Merged: 2025-05-14T02:07:33Z

…files for Elixir 1.18, Rust 1.86, and Bun 1.2. Modify README and config files to reflect new version requirements.

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

- **New Features**
  - Added new build environments for Elixir 1.18, Rust 1.86, and Bun 1.2 to support the latest language versions.

- **Documentation**
  - Updated instructions and configuration files to require Elixir 1.18, Rust 1.86, and Bun 1.2 across relevant starter templates and solutions.

- **Chores**
  - Updated configuration files to reflect new default language versions for Elixir, Rust, and TypeScript environments.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->


Diff:
diff --git a/compiled_starters/elixir/codecrafters.yml b/compiled_starters/elixir/codecrafters.yml
index eaed767..c286f69 100644
--- a/compiled_starters/elixir/codecrafters.yml
+++ b/compiled_starters/elixir/codecrafters.yml
@@ -7,5 +7,5 @@ debug: false
 # Use this to change the Elixir version used to run your code
 # on Codecrafters.
 #
-# Available versions: elixir-1.17
-language_pack: elixir-1.17
+# Available versions: elixir-1.18
+language_pack: elixir-1.18
diff --git a/compiled_starters/elixir/mix.exs b/compiled_starters/elixir/mix.exs
index f59b8e8..35e643d 100644
--- a/compiled_starters/elixir/mix.exs
+++ b/compiled_starters/elixir/mix.exs
@@ -6,7 +6,7 @@ defmodule App.MixProject do
     [
       app: :codecrafters_interpreter,
       version: "1.0.0",
-      elixir: "~> 1.17",
+      elixir: "~> 1.18",
       start_permanent: Mix.env() == :prod,
       deps: deps(),
       escript: [main_module: CLI]
diff --git a/compiled_starters/rust/README.md b/compiled_starters/rust/README.md
index 0bbb8b5..eb8cb34 100644
--- a/compiled_starters/rust/README.md
+++ b/compiled_starters/rust/README.md
@@ -43,7 +43,7 @@ Time to move on to the next stage!
 
 Note: This section is for stages 2 and beyond.
 
-1. Ensure you have `cargo (1.85)` installed locally
+1. Ensure you have `cargo (1.86)` installed locally
 2. Run `./your_program.sh` to run your program, which is implemented in
    `src/main.rs`. This command compiles your Rust project, so it might be slow
    the first time you run it. Subsequent runs will be fast.
diff --git a/compiled_starters/rust/codecrafters.yml b/compiled_starters/rust/codecrafters.yml
index 1085350..91fd79f 100644
--- a/compiled_starters/rust/codecrafters.yml
+++ b/compiled_starters/rust/codecrafters.yml
@@ -7,5 +7,5 @@ debug: false
 # Use this to change the Rust version used to run your code
 # on Codecrafters.
 #
-# Available versions: rust-1.85
-language_pack: rust-1.85
+# Available versions: rust-1.86
+language_pack: rust-1.86
diff --git a/compiled_starters/typescript/README.md b/compiled_starters/typescript/README.md
index 082e555..5efa019 100644
--- a/compiled_starters/typescript/README.md
+++ b/compiled_starters/typescript/README.md
@@ -43,7 +43,7 @@ Time to move on to the next stage!
 
 Note: This section is for stages 2 and beyond.
 
-1. Ensure you have `bun (1.1)` installed locally
+1. Ensure you have `bun (1.2)` installed locally
 2. Run `./your_program.sh` to run your program, which is implemented in
    `app/main.ts`.
 3. Commit your changes and run `git push origin master` to submit your solution
diff --git a/compiled_starters/typescript/codecrafters.yml b/compiled_starters/typescript/codecrafters.yml
index a263216..5baecf0 100644
--- a/compiled_starters/typescript/codecrafters.yml
+++ b/compiled_starters/typescript/codecrafters.yml
@@ -7,5 +7,5 @@ debug: false
 # Use this to change the TypeScript version used to run your code
 # on Codecrafters.
 #
-# Available versions: bun-1.1
-language_pack: bun-1.1
+# Available versions: bun-1.2
+language_pack: bun-1.2
diff --git a/dockerfiles/bun-1.2.Dockerfile b/dockerfiles/bun-1.2.Dockerfile
new file mode 100644
index 0000000..9666e78
--- /dev/null
+++ b/dockerfiles/bun-1.2.Dockerfile
@@ -0,0 +1,18 @@
+# syntax=docker/dockerfile:1.7-labs
+FROM oven/bun:1.2-alpine
+
+ENV CODECRAFTERS_DEPENDENCY_FILE_PATHS="package.json,bun.lockb"
+
+WORKDIR /app
+
+# .git & README.md are unique per-repository. We ignore them on first copy to prevent cache misses
+COPY --exclude=.git --exclude=README.md . /app
+
+# For reproducible builds.
+# This will install the exact versions of each package specified in the lockfile.
+# If package.json disagrees with bun.lockb, Bun will exit with an error. The lockfile will not be updated.
+RUN bun install --frozen-lockfile
+
+# If the node_modules directory exists, move it to /app-cached
+RUN mkdir -p /app-cached
+RUN if [ -d "/app/node_modules" ]; then mv /app/node_modules /app-cached; fi
diff --git a/dockerfiles/elixir-1.18.Dockerfile b/dockerfiles/elixir-1.18.Dockerfile
new file mode 100644
index 0000000..87762ff
--- /dev/null
+++ b/dockerfiles/elixir-1.18.Dockerfile
@@ -0,0 +1,25 @@
+# syntax=docker/dockerfile:1.7-labs
+FROM elixir:1.18.3-alpine
+
+# Ensures the container is re-built if dependency files change
+ENV CODECRAFTERS_DEPENDENCY_FILE_PATHS="mix.exs"
+
+WORKDIR /app
+
+# .git & README.md are unique per-repository. We ignore them on first copy to prevent cache misses
+COPY --exclude=.git --exclude=README.md . /app
+
+# install hex + rebar
+RUN mix local.hex --force && \
+  mix local.rebar --force
+
+# install and compile mix dependencies
+RUN mix deps.get && \
+  mix deps.compile
+
+# Install & cache deps
+RUN .codecrafters/compile.sh
+
+RUN mkdir -p /app-cached
+RUN if [ -d "/app/_build" ]; then mv /app/_build /app-cached; fi
+RUN if [ -d "/app/deps" ]; then mv /app/deps /app-cached; fi
diff --git a/dockerfiles/rust-1.86.Dockerfile b/dockerfiles/rust-1.86.Dockerfile
new file mode 100644
index 0000000..a330b5b
--- /dev/null
+++ b/dockerfiles/rust-1.86.Dockerfile
@@ -0,0 +1,13 @@
+# syntax=docker/dockerfile:1.7-labs
+FROM rust:1.86-bookworm
+
+# Rebuild the container if these files change
+ENV CODECRAFTERS_DEPENDENCY_FILE_PATHS="Cargo.toml,Cargo.lock"
+
+WORKDIR /app
+
+# .git & README.md are unique per-repository. We ignore them on first copy to prevent cache misses
+COPY --exclude=.git --exclude=README.md . /app
+
+# This runs cargo build
+RUN .codecrafters/compile.sh
diff --git a/solutions/elixir/01-ry8/code/codecrafters.yml b/solutions/elixir/01-ry8/code/codecrafters.yml
index eaed767..c286f69 100644
--- a/solutions/elixir/01-ry8/code/codecrafters.yml
+++ b/solutions/elixir/01-ry8/code/codecrafters.yml
@@ -7,5 +7,5 @@ debug: false
 # Use this to change the Elixir version used to run your code
 # on Codecrafters.
 #
-# Available versions: elixir-1.17
-language_pack: elixir-1.17
+# Available versions: elixir-1.18
+language_pack: elixir-1.18
diff --git a/solutions/elixir/01-ry8/code/mix.exs b/solutions/elixir/01-ry8/code/mix.exs
index f59b8e8..35e643d 100644
--- a/solutions/elixir/01-ry8/code/mix.exs
+++ b/solutions/elixir/01-ry8/code/mix.exs
@@ -6,7 +6,7 @@ defmodule App.MixProject do
     [
       app: :codecrafters_interpreter,
       version: "1.0.0",
-      elixir: "~> 1.17",
+      elixir: "~> 1.18",
       start_permanent: Mix.env() == :prod,
       deps: deps(),
       escript: [main_module: CLI]
diff --git a/solutions/rust/01-ry8/code/README.md b/solutions/rust/01-ry8/code/README.md
index 0bbb8b5..eb8cb34 100644
--- a/solutions/rust/01-ry8/code/README.md
+++ b/solutions/rust/01-ry8/code/README.md
@@ -43,7 +43,7 @@ Time to move on to the next stage!
 
 Note: This section is for stages 2 and beyond.
 
-1. Ensure you have `cargo (1.85)` installed locally
+1. Ensure you have `cargo (1.86)` installed locally
 2. Run `./your_program.sh` to run your program, which is implemented in
    `src/main.rs`. This command compiles your Rust project, so it might be slow
    the first time you run it. Subsequent runs will be fast.
diff --git a/solutions/rust/01-ry8/code/codecrafters.yml b/solutions/rust/01-ry8/code/codecrafters.yml
index 1085350..91fd79f 100644
--- a/solutions/rust/01-ry8/code/codecrafters.yml
+++ b/solutions/rust/01-ry8/code/codecrafters.yml
@@ -7,5 +7,5 @@ debug: false
 # Use this to change the Rust version used to run your code
 # on Codecrafters.
 #
-# Available versions: rust-1.85
-language_pack: rust-1.85
+# Available versions: rust-1.86
+language_pack: rust-1.86
diff --git a/solutions/typescript/01-ry8/code/README.md b/solutions/typescript/01-ry8/code/README.md
index 082e555..5efa019 100644
--- a/solutions/typescript/01-ry8/code/README.md
+++ b/solutions/typescript/01-ry8/code/README.md
@@ -43,7 +43,7 @@ Time to move on to the next stage!
 
 Note: This section is for stages 2 and beyond.
 
-1. Ensure you have `bun (1.1)` installed locally
+1. Ensure you have `bun (1.2)` installed locally
 2. Run `./your_program.sh` to run your program, which is implemented in
    `app/main.ts`.
 3. Commit your changes and run `git push origin master` to submit your solution
diff --git a/solutions/typescript/01-ry8/code/codecrafters.yml b/solutions/typescript/01-ry8/code/codecrafters.yml
index a263216..5baecf0 100644
--- a/solutions/typescript/01-ry8/code/codecrafters.yml
+++ b/solutions/typescript/01-ry8/code/codecrafters.yml
@@ -7,5 +7,5 @@ debug: false
 # Use this to change the TypeScript version used to run your code
 # on Codecrafters.
 #
-# Available versions: bun-1.1
-language_pack: bun-1.1
+# Available versions: bun-1.2
+language_pack: bun-1.2
diff --git a/starter_templates/elixir/code/mix.exs b/starter_templates/elixir/code/mix.exs
index f59b8e8..35e643d 100644
--- a/starter_templates/elixir/code/mix.exs
+++ b/starter_templates/elixir/code/mix.exs
@@ -6,7 +6,7 @@ defmodule App.MixProject do
     [
       app: :codecrafters_interpreter,
       version: "1.0.0",
-      elixir: "~> 1.17",
+      elixir: "~> 1.18",
       start_permanent: Mix.env() == :prod,
       deps: deps(),
       escript: [main_module: CLI]
diff --git a/starter_templates/rust/config.yml b/starter_templates/rust/config.yml
index d0f03e8..db0c8a3 100644
--- a/starter_templates/rust/config.yml
+++ b/starter_templates/rust/config.yml
@@ -1,3 +1,3 @@
 attributes:
-  required_executable: cargo (1.85)
+  required_executable: cargo (1.86)
   user_editable_file: src/main.rs
diff --git a/starter_templates/typescript/config.yml b/starter_templates/typescript/config.yml
index 9abb315..187d430 100644
--- a/starter_templates/typescript/config.yml
+++ b/starter_templates/typescript/config.yml
@@ -1,3 +1,3 @@
 attributes:
-  required_executable: bun (1.1)
+  required_executable: bun (1.2)
   user_editable_file: app/main.ts


Reviews:
user: login: coderabbitai[bot]
body: **Actionable comments posted: 3**

<details>
<summary>🧹 Nitpick comments (11)</summary><blockquote>

<details>
<summary>dockerfiles/bun-1.2.Dockerfile (1)</summary><blockquote>

`17-18`: **Combine and simplify caching steps**  
Consider collapsing the two `RUN` commands into one to reduce image layers, or leverage BuildKit cache mounts for `bun install`.  
  
Example diff to merge layers:

```diff
-RUN mkdir -p /app-cached
-RUN if [ -d "/app/node_modules" ]; then mv /app/node_modules /app-cached; fi
+RUN mkdir -p /app-cached && \
+    if [ -d /app/node_modules ]; then mv /app/node_modules /app-cached; fi
```

Alternatively, with BuildKit cache mount:

```dockerfile
# syntax=docker/dockerfile:1.7-labs
...
RUN --mount=type=cache,target=/app/node_modules \
    bun install --frozen-lockfile
```

</blockquote></details>
<details>
<summary>solutions/rust/01-ry8/code/README.md (1)</summary><blockquote>

`46-46`: **Update version notation for clarity**

Consider removing the parentheses inside the backticks to keep the phrasing consistent and clear. For example:

```diff
- 1. Ensure you have `cargo (1.86)` installed locally
+ 1. Ensure you have `cargo 1.86` installed locally
```

</blockquote></details>
<details>
<summary>starter_templates/rust/config.yml (1)</summary><blockquote>

`2-2`: **Quote YAML string for safety**

To avoid any potential parsing ambiguity in YAML, wrap the version string in quotes:

```diff
- required_executable: cargo (1.86)
+ required_executable: "cargo (1.86)"
```

</blockquote></details>
<details>
<summary>compiled_starters/rust/README.md (1)</summary><blockquote>

`46-46`: **Consistent phrasing with solution README**

For uniformity across documentation, mirror the style in the solution README:

```diff
- 1. Ensure you have `cargo (1.86)` installed locally
+ 1. Ensure you have `cargo 1.86` installed locally
```

</blockquote></details>
<details>
<summary>dockerfiles/rust-1.86.Dockerfile (2)</summary><blockquote>

`2-2`: **Consider pinning the base image digest for reproducibility.**

For truly reproducible builds, pin the image to a specific digest:

```diff
-FROM rust:1.86-bookworm
+FROM rust@sha256:<insert-correct-digest-for-1.86-bookworm>
```

You can retrieve the digest with:

```shell
docker pull rust:1.86-bookworm
docker inspect --format='{{index .RepoDigests 0}}' rust:1.86-bookworm
```

---

`10-10`: **Validate use of `--exclude` flags with BuildKit labs.**

Hadolint flags an “invalid flag: --exclude” error, but with the `# syntax=docker/dockerfile:1.7-labs` directive, BuildKit v1.7+ does support `COPY --exclude`. Please confirm that your CI/build environment enables BuildKit labs syntax.  
Alternatively, for broader compatibility, consider using a `.dockerignore`:

```diff
-COPY --exclude=.git --exclude=README.md . /app
+COPY . /app

# in .dockerignore (at repo root):
+.git
+README.md
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 Hadolint (2.12.0)</summary>

[error] 10-10: invalid flag: --exclude

(DL1000)

</details>

</details>

</blockquote></details>
<details>
<summary>dockerfiles/elixir-1.18.Dockerfile (5)</summary><blockquote>

`1-2`: **Pin base image to a digest for reproducible builds.**

Using `elixir:1.18.3-alpine` is clear, but tags can be mutable. Pinning to an explicit digest ensures your build always uses the exact same image:

```dockerfile
-FROM elixir:1.18.3-alpine
+FROM elixir@sha256:<insert-digest-here>-alpine
```

You can obtain the digest from Docker Hub or your image registry.

---

`7-11`: **Prefer `.dockerignore` over `COPY --exclude`.**

Relying on `--exclude` requires BuildKit and isn’t supported by default Docker tooling. A `.dockerignore` file is the idiomatic way to exclude `.git`, `README.md`, and other unneeded files:

```text
# .dockerignore
.git
README.md
```

Then simplify the Dockerfile to `COPY . /app`.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 Hadolint (2.12.0)</summary>

[error] 10-10: invalid flag: --exclude

(DL1000)

</details>

</details>

---

`10-10`: **Silence Hadolint false positive for `--exclude`.**

Hadolint flags DL1000 on `--exclude`, but this is valid under the BuildKit syntax directive. You can suppress the warning by adding:

```dockerfile
# hadolint ignore=DL1000
COPY --exclude=.git --exclude=README.md . /app
```

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 Hadolint (2.12.0)</summary>

[error] 10-10: invalid flag: --exclude

(DL1000)

</details>

</details>

---

`17-19`: **Scope deps installation to production.**

By default this will pull in dev/test deps as well. To limit to production:

```dockerfile
-RUN mix deps.get && \
-    mix deps.compile
+RUN MIX_ENV=prod mix deps.get && \
+    MIX_ENV=prod mix deps.compile
```

---

`23-25`: **Combine RUNs & leverage BuildKit caching.**

You can collapse the three `RUN` steps into one layer to reduce image size:

```diff
-RUN mkdir -p /app-cached
-RUN if [ -d "/app/_build" ]; then mv /app/_build /app-cached; fi
-RUN if [ -d "/app/deps" ]; then mv /app/deps /app-cached; fi
+RUN mkdir -p /app-cached && \
+    [ -d /app/_build ] && mv /app/_build /app-cached && \
+    [ -d /app/deps ]     && mv /app/deps     /app-cached
```

Even better: use BuildKit’s cache mounts to persist `/app/_build` and `/app/deps` across builds:

```dockerfile
RUN --mount=type=cache,target=/app/_build \
    --mount=type=cache,target=/app/deps \
    mix deps.get && mix deps.compile
```

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between ef4bd4dc4a935a87c61e9ffc5aa47b7af828b0dc and 17de1852ae0437f9d41f2224902e08ce711615af.

</details>

<details>
<summary>📒 Files selected for processing (18)</summary>

* `compiled_starters/elixir/codecrafters.yml` (1 hunks)
* `compiled_starters/elixir/mix.exs` (1 hunks)
* `compiled_starters/rust/README.md` (1 hunks)
* `compiled_starters/rust/codecrafters.yml` (1 hunks)
* `compiled_starters/typescript/README.md` (1 hunks)
* `compiled_starters/typescript/codecrafters.yml` (1 hunks)
* `dockerfiles/bun-1.2.Dockerfile` (1 hunks)
* `dockerfiles/elixir-1.18.Dockerfile` (1 hunks)
* `dockerfiles/rust-1.86.Dockerfile` (1 hunks)
* `solutions/elixir/01-ry8/code/codecrafters.yml` (1 hunks)
* `solutions/elixir/01-ry8/code/mix.exs` (1 hunks)
* `solutions/rust/01-ry8/code/README.md` (1 hunks)
* `solutions/rust/01-ry8/code/codecrafters.yml` (1 hunks)
* `solutions/typescript/01-ry8/code/README.md` (1 hunks)
* `solutions/typescript/01-ry8/code/codecrafters.yml` (1 hunks)
* `starter_templates/elixir/code/mix.exs` (1 hunks)
* `starter_templates/rust/config.yml` (1 hunks)
* `starter_templates/typescript/config.yml` (1 hunks)

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 Hadolint (2.12.0)</summary>

<details>
<summary>dockerfiles/rust-1.86.Dockerfile</summary>

[error] 10-10: invalid flag: --exclude

(DL1000)

</details>
<details>
<summary>dockerfiles/elixir-1.18.Dockerfile</summary>

[error] 10-10: invalid flag: --exclude

(DL1000)

</details>
<details>
<summary>dockerfiles/bun-1.2.Dockerfile</summary>

[error] 9-9: invalid flag: --exclude

(DL1000)

</details>

</details>

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (1)</summary>

* GitHub Check: test_course_definition / test (ocaml)

</details>

<details>
<summary>🔇 Additional comments (21)</summary><blockquote>

<details>
<summary>compiled_starters/typescript/README.md (1)</summary>

`46-46`: **Update TypeScript starter README to require Bun v1.2**  
The step now correctly specifies `bun (1.2)` for stages 2 and beyond, aligning the documentation with the updated runtime version.

</details>
<details>
<summary>solutions/typescript/01-ry8/code/README.md (1)</summary>

`46-46`: **Update solution README to require Bun v1.2**  
The instructions are now consistent with the new `bun (1.2)` runtime, matching the updated config files.

</details>
<details>
<summary>starter_templates/typescript/config.yml (1)</summary>

`2-2`: **Bump required Bun executable to v1.2**  
The `required_executable` attribute has been updated to `bun (1.2)`, enforcing the correct runtime version in the starter template.

</details>
<details>
<summary>solutions/typescript/01-ry8/code/codecrafters.yml (1)</summary>

`10-11`: **Upgrade CI language_pack to Bun 1.2**  
Both the available-versions comment and `language_pack` setting have been changed to `bun-1.2`, reflecting the new Bun runtime environment for this solution.

</details>
<details>
<summary>compiled_starters/typescript/codecrafters.yml (1)</summary>

`10-11`: **Set starter CI language_pack to Bun 1.2**  
Aligned the comment and `language_pack` value to `bun-1.2`, ensuring the compiled starter uses the updated build environment.

</details>
<details>
<summary>dockerfiles/bun-1.2.Dockerfile (3)</summary>

`1-2`: **Upgrade to Bun 1.2 base image is correct**  
The syntax directive and base image `oven/bun:1.2-alpine` align with the PR objective to bump Bun to v1.2.

---

`4-4`: **Environment variable for dependency paths is well-defined**  
Setting `CODECRAFTERS_DEPENDENCY_FILE_PATHS` to `package.json,bun.lockb` ensures the tooling knows exactly which files to watch.

---

`14-14`: **Reproducible install step is solid**  
Using `bun install --frozen-lockfile` enforces lockfile consistency and reproducibility.

</details>
<details>
<summary>solutions/rust/01-ry8/code/codecrafters.yml (1)</summary>

`10-11`: **Approve Rust version bump**

The change to:

```yaml
# Available versions: rust-1.86
language_pack: rust-1.86
```

aligns the solution with the new Rust 1.86 environment. Ensure there are no lingering references to the old `rust-1.85`.

</details>
<details>
<summary>compiled_starters/rust/codecrafters.yml (1)</summary>

`10-11`: **Approve Rust version bump**

Updating to:

```yaml
# Available versions: rust-1.86
language_pack: rust-1.86
```

keeps the starter config in sync with the new Docker environment. Verify any CI scripts or Docker references have been updated accordingly.

</details>
<details>
<summary>dockerfiles/rust-1.86.Dockerfile (4)</summary>

`1-2`: **Base image upgrade is correct and aligned with PR objectives.**

The new `rust:1.86-bookworm` image matches the requested Rust version update to v1.86.

---

`5-5`: **Dependency file monitoring via ENV is well configured.**

Setting `CODECRAFTERS_DEPENDENCY_FILE_PATHS` to `"Cargo.toml,Cargo.lock"` ensures the layer cache invalidates correctly when these files change.

---

`7-7`: **Working directory is properly set.**

Using `WORKDIR /app` aligns with the expected application location for the compile script.

---

`13-13`: **Ensure the compile script exists and is executable.**

The `RUN .codecrafters/compile.sh` step will fail if the script is missing or lacks execute permissions. Please verify that `.codecrafters/compile.sh` is included in the repo and has the executable bit set (`chmod +x`).

</details>
<details>
<summary>solutions/elixir/01-ry8/code/codecrafters.yml (1)</summary>

`10-11`: **Elixir runtime version bump is correct.**  
The comment and `language_pack` setting have been updated from `elixir-1.17` to `elixir-1.18` as intended. Ensure that the CI and deployment environments support `elixir-1.18`.

</details>
<details>
<summary>compiled_starters/elixir/mix.exs (1)</summary>

`9-9`: **Mix project Elixir requirement updated.**  
The `elixir: "~> 1.18"` line correctly aligns this compiled starter with the new Elixir version. Verify that downstream starter templates and solution tests are passing under Elixir 1.18.

</details>
<details>
<summary>starter_templates/elixir/code/mix.exs (1)</summary>

`9-9`: **Starter template Elixir requirement bumped.**  
Updating the version to `~> 1.18` here keeps the template in sync. Confirm that template-based CI pipelines install and test with Elixir 1.18 successfully.

</details>
<details>
<summary>solutions/elixir/01-ry8/code/mix.exs (1)</summary>

`9-9`: **Solution Mix config aligned to Elixir 1.18.**  
The change from `~> 1.17` to `~> 1.18` matches the rest of the solution environment. Double-check that all example projects still compile and run under 1.18.

</details>
<details>
<summary>compiled_starters/elixir/codecrafters.yml (1)</summary>

`10-11`: **Compiled starter language_pack updated.**  
The available versions comment and `language_pack: elixir-1.18` entry are correctly bumped. Ensure consistency between this file and any CI config that references Elixir versions.

</details>
<details>
<summary>dockerfiles/elixir-1.18.Dockerfile (2)</summary>

`13-15`: **Installation of Hex & Rebar is correct.**

Combining `mix local.hex --force` and `mix local.rebar --force` in one `RUN` layer follows best practices and ensures both package managers are installed.

---

`21-21`: **OK: Custom compile script.**

Using `.codecrafters/compile.sh` centralizes your dependency caching logic and keeps the Dockerfile concise.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: NONE
submitted_at: 2025-05-14T02:08:10Z

Review comments:
diff_hunk: @@ -0,0 +1,18 @@
+# syntax=docker/dockerfile:1.7-labs
+FROM oven/bun:1.2-alpine
+
+ENV CODECRAFTERS_DEPENDENCY_FILE_PATHS="package.json,bun.lockb"
+
+WORKDIR /app
+
+# .git & README.md are unique per-repository. We ignore them on first copy to prevent cache misses
+COPY --exclude=.git --exclude=README.md . /app
path: dockerfiles/bun-1.2.Dockerfile
user: login: coderabbitai[bot]
body: _⚠️ Potential issue_

**Invalid COPY flags will break the build**  
Docker’s `COPY` does not support `--exclude` flags (Hadolint DL1000). Use a `.dockerignore` file instead of inline exclusions.  
  
Apply this diff and add a `.dockerignore` at the repository root listing `.git` and `README.md`:

```diff
-COPY --exclude=.git --exclude=README.md . /app
+COPY . /app
```


<!-- suggestion_start -->

<details>
<summary>📝 Committable suggestion</summary>

> ‼️ **IMPORTANT**
> Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

```suggestion
COPY . /app
```

</details>

<!-- suggestion_end -->

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 Hadolint (2.12.0)</summary>

[error] 9-9: invalid flag: --exclude

(DL1000)

</details>

</details>

<!-- This is an auto-generated comment by CodeRabbit -->
created_at: 2025-05-14T02:08:10Z
author_association: NONE
diff_hunk: @@ -43,7 +43,7 @@ Time to move on to the next stage!
 
 Note: This section is for stages 2 and beyond.
 
-1. Ensure you have `cargo (1.85)` installed locally
+1. Ensure you have `cargo (1.86)` installed locally
path: solutions/rust/01-ry8/code/README.md
user: login: coderabbitai[bot]
body: _💡 Verification agent_

<details>
<summary>❓ Verification inconclusive</summary>

**Verify presence of new Dockerfile**

This README now references Rust 1.86 support—please confirm that `dockerfiles/rust-1.86.Dockerfile` has been added to the repo and is properly integrated into your CI/build processes.

Run:

to confirm the Dockerfile’s existence.

---

🏁 Script executed:

```shell
#!/bin/bash
fd dockerfiles/rust-1.86.Dockerfile
```

Length of output: 37

---



</details>

**Add missing Dockerfile for Rust 1.86**

The README calls out support for Rust 1.86, but `dockerfiles/rust-1.86.Dockerfile` isn’t present in the repo (confirmed via `fd dockerfiles/rust-1.86.Dockerfile`). Please:

- Add `dockerfiles/rust-1.86.Dockerfile` matching your other Rust Dockerfiles  
- Update your CI/build workflows to include and test against this new image

<!-- This is an auto-generated comment by CodeRabbit -->
created_at: 2025-05-14T02:08:10Z
author_association: NONE
diff_hunk: @@ -0,0 +1,25 @@
+# syntax=docker/dockerfile:1.7-labs
+FROM elixir:1.18.3-alpine
+
+# Ensures the container is re-built if dependency files change
+ENV CODECRAFTERS_DEPENDENCY_FILE_PATHS="mix.exs"
+
path: dockerfiles/elixir-1.18.Dockerfile
user: login: coderabbitai[bot]
body: _🛠️ Refactor suggestion_

**Include `mix.lock` in cache invalidation.**

Changes to `mix.lock` should also bust the dependency cache. Update the env var to cover both files:

```diff
-ENV CODECRAFTERS_DEPENDENCY_FILE_PATHS="mix.exs"
+ENV CODECRAFTERS_DEPENDENCY_FILE_PATHS="mix.exs mix.lock"
```

<!-- This is an auto-generated comment by CodeRabbit -->
created_at: 2025-05-14T02:08:10Z
author_association: NONE

PR comments:
user: login: coderabbitai[bot]
created_at: 2025-05-14T02:01:38Z
body: <!-- This is an auto-generated comment: summarize by coderabbit.ai -->
<!-- walkthrough_start -->

## Walkthrough

This update synchronizes the Elixir, Rust, and TypeScript starter templates, solutions, and build environments to newer language/runtime versions. It introduces new Dockerfiles for Elixir 1.18, Rust 1.86, and Bun 1.2, and updates version requirements in configuration and documentation files across the respective language directories.

## Changes

| Files/Paths                                                                                       | Change Summary                                                                                      |
|---------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------|
| `compiled_starters/elixir/codecrafters.yml`, `solutions/elixir/01-ry8/code/codecrafters.yml`      | Updated Elixir version in configuration from 1.17 to 1.18 and adjusted version comments.            |
| `compiled_starters/elixir/mix.exs`, `solutions/elixir/01-ry8/code/mix.exs`, `starter_templates/elixir/code/mix.exs` | Updated Elixir version requirement from "~> 1.17" to "~> 1.18".                                     |
| `dockerfiles/elixir-1.18.Dockerfile`                                                              | Added new Dockerfile for Elixir 1.18 with dependency caching and build setup.                       |
| `compiled_starters/rust/codecrafters.yml`, `solutions/rust/01-ry8/code/codecrafters.yml`          | Updated Rust version in configuration from 1.85 to 1.86 and adjusted version comments.              |
| `compiled_starters/rust/README.md`, `solutions/rust/01-ry8/code/README.md`, `starter_templates/rust/config.yml` | Updated required cargo version from 1.85 to 1.86 in documentation and config.                       |
| `dockerfiles/rust-1.86.Dockerfile`                                                                | Added new Dockerfile for Rust 1.86 with build script and dependency caching.                        |
| `compiled_starters/typescript/codecrafters.yml`, `solutions/typescript/01-ry8/code/codecrafters.yml` | Updated Bun version in configuration from 1.1 to 1.2 and adjusted version comments.                 |
| `compiled_starters/typescript/README.md`, `solutions/typescript/01-ry8/code/README.md`, `starter_templates/typescript/config.yml` | Updated required Bun version from 1.1 to 1.2 in documentation and config.                           |
| `dockerfiles/bun-1.2.Dockerfile`                                                                  | Added new Dockerfile for Bun 1.2 with dependency install and caching logic.                         |

## Sequence Diagram(s)

```mermaid
sequenceDiagram
    participant Developer
    participant Dockerfile
    participant BuildEnv
    participant Cache

    Developer->>Dockerfile: Specify new language/runtime version
    Dockerfile->>BuildEnv: Build with updated base image (Elixir 1.18, Rust 1.86, Bun 1.2)
    BuildEnv->>BuildEnv: Install dependencies (mix/bun/cargo)
    BuildEnv->>Cache: Move/copy dependency directories for caching
    BuildEnv->>Developer: Ready environment with updated language/runtime
```

## Poem

> A hop, a skip, a version leap,
> Fresh Dockerfiles for builds to keep.
> Elixir, Rust, and Bun anew,
> Templates polished, configs too.
> Rabbits cheer with every patch,
> For modern stacks are hard to match!
> 🐇✨

<!-- walkthrough_end -->

<!-- announcements_start -->

> [!TIP]
> <details>
> <summary>⚡️ Faster reviews with caching</summary>
> 
> - CodeRabbit now supports caching for code and dependencies, helping speed up reviews. This means quicker feedback, reduced wait times, and a smoother review experience overall. Cached data is encrypted and stored securely. This feature will be automatically enabled for all accounts on May 16th. To opt out, configure `Review - Disable Cache` at either the organization or repository level. If you prefer to disable all data retention across your organization, simply turn off the `Data Retention` setting under your Organization Settings.
> 
> Enjoy the performance boost—your workflow just got faster.
> 
> </details>

<!-- announcements_end -->
<!-- internal state start -->


<!-- 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 -->

<!-- internal state end -->
<!-- finishing_touch_checkbox_start -->

<details open="true">
<summary>✨ Finishing Touches</summary>

- [ ] <!-- {"checkboxId": "7962f53c-55bc-4827-bfbf-6a18da830691"} --> 📝 Generate Docstrings

</details>

<!-- finishing_touch_checkbox_end -->
<!-- tips_start -->

---



<details>
<summary>🪧 Tips</summary>

### Chat

There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=codecrafters-io/build-your-own-interpreter&utm_content=95):

- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
  - `I pushed a fix in commit <commit_id>, please review it.`
  - `Explain this complex logic.`
  - `Open a follow-up GitHub issue for this discussion.`
- Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples:
  - `@coderabbitai explain this code block.`
  -	`@coderabbitai modularize this function.`
- PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
  - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.`
  - `@coderabbitai read src/utils.ts and explain its main purpose.`
  - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.`
  - `@coderabbitai help me debug CodeRabbit configuration file.`

### Support

Need help? Create a ticket on our [support page](https://www.coderabbit.ai/contact-us/support) for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

### CodeRabbit Commands (Invoked using PR comments)

- `@coderabbitai pause` to pause the reviews on a PR.
- `@coderabbitai resume` to resume the paused reviews.
- `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
- `@coderabbitai full review` to do a full review from scratch and review all the files again.
- `@coderabbitai summary` to regenerate the summary of the PR.
- `@coderabbitai generate docstrings` to [generate docstrings](https://docs.coderabbit.ai/finishing-touches/docstrings) for this PR.
- `@coderabbitai generate sequence diagram` to generate a sequence diagram of the changes in this PR.
- `@coderabbitai resolve` resolve all the CodeRabbit review comments.
- `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository.
- `@coderabbitai help` to get help.

### Other keywords and placeholders

- Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed.
- Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description.
- Add `@coderabbitai` anywhere in the PR title to generate the title automatically.

### CodeRabbit Configuration File (`.coderabbit.yaml`)

- You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository.
- Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information.
- If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json`

### Documentation and Community

- Visit our [Documentation](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit.
- Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback.
- Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.

</details>

<!-- tips_end -->
author_association: NONE
user: login: linear[bot]
created_at: 2025-05-14T02:02:12Z
body: <p><a href="https://linear.app/codecrafters/issue/CC-1745/upgrade-bun-to-v12">CC-1745 Upgrade Bun to v1.2</a></p>
author_association: NONE