Skip to content

chore(main): release fern 0.2.0#1

Open
niklas-heer wants to merge 1 commit intomainfrom
release-please--branches--main--components--fern
Open

chore(main): release fern 0.2.0#1
niklas-heer wants to merge 1 commit intomainfrom
release-please--branches--main--components--fern

Conversation

@niklas-heer
Copy link
Owner

@niklas-heer niklas-heer commented Feb 6, 2026

🤖 I have created a release beep boop

0.2.0 (2026-02-09)

⚠ BREAKING CHANGES

  • runtime: Result type representation changed from packed int64 to heap-allocated struct.

Features

  • add 🌿 branding and emoji file extension support (1526ce2)
  • add automation scripts for Ralph Loop (cfa24a6)
  • add complete Fern language design specification (763868f)
  • add plain text demo (no color codes for nushell compatibility) (a04cc37)
  • add Ralph Loop autonomous development system (990b2f9)
  • add ralph-demo.sh to demonstrate the Ralph Loop workflow (9071be7)
  • benchmarks: add Fern vs C vs Python benchmark suite (a9cefad)
  • build: use embedded QBE backend instead of external binary (1109be5)
  • checker: add let statement type checking with inference (0b0865e)
  • checker: add match expression type checking (1da24bf)
  • checker: add Ok/Err value constructors and improve error locations (df131da)
  • checker: add source location to type error messages (5a08ff0)
  • checker: add try operator (?) type checking (3d4ea49)
  • checker: add type checking for calls, if, and blocks (8fd3991)
  • checker: add type checking for STMT_FN, STMT_TYPE_DEF, EXPR_LIST_COMP, EXPR_INTERP_STRING (ccd3a83)
  • checker: implement constructor pattern binding for Option and Result (c9a1813)
  • checker: implement generic type instantiation with unification (3a5e872)
  • checker: implement type checker for expressions (e150877)
  • checker: implement type checking for bind, with, lambda, for, index, and pipe (3956cb2)
  • checker: implement type checking for dot, range, and map expressions (cc414ae)
  • cli: add -o/--output flag for build command (efcdcb8)
  • cli: add colored error messages (f43e248)
  • cli: add run, lex, parse commands and improve help (3fc00a3)
  • cli: document emoji file extension support (.🌿) (a08e0e2)
  • codegen: add defer statement code generation (2549b18)
  • codegen: add for loop code generation (96f1b45)
  • codegen: add runtime integration for Result, List, and ? operator (f4911ac)
  • codegen: add with expression code generation (d96347e)
  • codegen: implement pipe operator for Tui builder pattern (0406018)
  • codegen: implement proper pointer type handling for functions (e1eaa5e)
  • codegen: implement QBE code generation (Milestone 4) (0e9b265)
  • codegen: implement string interpolation (11ce99a)
  • compiler: implement fern build command with full compilation pipeline (7cff339)
  • complete Milestone 0 - Project Setup (7552cb3)
  • editor: add Tree-sitter grammar and Zed extension with indentation support (daf522d)
  • examples: add string interpolation example and test target (dbec273)
  • examples: add TUI demo showcasing Panel, Table, Style (a257320)
  • file: add directory listing functions (57f90d1)
  • io: make print/println polymorphic (Int, String, Bool) (726311c)
  • lang: add built-in module system (String, List, File) (879f2fc)
  • lang: add range iteration and System module type support (eea0c23)
  • lang: add System module for CLI argument access (bb1b404)
  • lang: add System.exec, getenv/setenv and Regex module (3d0a35e)
  • lang: allow omitting return type for main() (65feb19)
  • lexer,parser: implement derive clause on type definitions (e725520)
  • lexer,parser: implement float literal lexing and parsing (0b68167)
  • lexer,parser: implement inclusive range operator (..=) (d760e08)
  • lexer,parser: implement lambda/anonymous function expressions (2249811)
  • lexer,parser: implement loop constructs (8dad7a8)
  • lexer,parser: implement postfix unless for return statements (77802d8)
  • lexer,parser: implement record update syntax ({ base | field: value }) (dafe27a)
  • lexer,parser: implement string interpolation (1d608bb)
  • lexer,parser: implement where clauses on function definitions (57f94ff)
  • lexer: add block comment support (/* */) (0277001)
  • lexer: add Python-style indentation tracking (4652111)
  • lexer: add Unicode and emoji identifier support (dcb3bb7)
  • lexer: handle string escape sequences (22eb129)
  • lexer: implement core lexer (TDD - GREEN phase) (f643454)
  • lexer: implement hex, binary, and octal number literals (d860d20)
  • list: add 'in' operator and List.any/List.all functions (daf30ca)
  • lsp: implement Language Server Protocol with diagnostics and hover (bc8edd0)
  • modules: add Tui.* nested module namespace support (3647bc1)
  • parser: add dedent tracking for proper block termination (4074344)
  • parser: add indentation support to control structures (f2353dc)
  • parser: add tuple type support in type annotations (34590d9)
  • parser: implement ? operator for Result propagation (Decision 11) (196428b)
  • parser: implement <- bind operator parsing (5d1a089)
  • parser: implement block expression parsing (d31a1c8)
  • parser: implement condition-only match (match: without value) (589fdac)
  • parser: implement constructor patterns and unified parse_pattern (83bd1c1)
  • parser: implement defer statement parsing (c7911f7)
  • parser: implement dot access expressions (f4381e9)
  • parser: implement function definition parsing (14ca62e)
  • parser: implement if expression parsing (TDD - GREEN phase) (3e725f3)
  • parser: implement indentation-based function body parsing (834357a)
  • parser: implement index access expression parsing (7f9dbb7)
  • parser: implement labeled function arguments (83665c4)
  • parser: implement let-else pattern for early unwrapping (15ce681)
  • parser: implement list comprehensions (d3fd32a)
  • parser: implement list literal parsing (b6a8014)
  • parser: implement map literal parsing (%{ key: value }) (562e331)
  • parser: implement match arm guards (pattern if condition -> body) (8f92b98)
  • parser: implement match expression parsing (46c4723)
  • parser: implement module and import declaration parsing (307f2be)
  • parser: implement module declaration parsing (d268896)
  • parser: implement modulo (%) and power (**) operator parsing (2c0a014)
  • parser: implement multi-clause function definitions (33c86e2)
  • parser: implement newtype declaration parsing (28e85f0)
  • parser: implement optional type annotations for let statements (b9928f6)
  • parser: implement postfix if/unless on expression statements (f7d389a)
  • parser: implement postfix return guards (return x if condition) (cd1daa1)
  • parser: implement range expression parsing (478e07c)
  • parser: implement recursive descent parser (TDD - GREEN phase) (2dbf451)
  • parser: implement rest patterns in destructuring (91edeac)
  • parser: implement spawn, send, and receive expression parsing (80180d7)
  • parser: implement trait and impl block parsing (96d0528)
  • parser: implement tuple field access (.0, .1) (e302fd4)
  • parser: implement tuple literal parsing (2adad9f)
  • parser: implement tuple/constructor destructuring in let bindings (a52f270)
  • parser: implement type annotation parsing (12208d8)
  • parser: implement type definition parsing (658fb3b)
  • parser: implement where clause on trait definitions (480f39f)
  • parser: implement with expression parsing (b744b75)
  • repl: add interactive REPL with line editing and history (c9cc878)
  • roadmap: add FernSim deterministic actor simulation testing (2013225)
  • runtime: add comprehensive List functions (590ae03)
  • runtime: add comprehensive String functions (061a934)
  • runtime: add Fern runtime library (ef6ccfa)
  • runtime: add fern_str_lines() function (d95ea51)
  • runtime: add GC header for Boehm GC integration (3ad35f8)
  • runtime: add List.contains functions for membership testing (fa2bdc7)
  • runtime: add Result and Option type functions (85f4abf)
  • scripts: add Fern style checker scripts (11cc15c)
  • scripts: enhance check_style.fn with build/test verification (b644462)
  • stdlib: add built-in string and list functions (8eddaa6)
  • stdlib: add file I/O functions to runtime (20dcd5c)
  • stdlib: add runtime library with print/println functions (2294a4d)
  • stdlib: register additional built-in functions (293d73c)
  • string: add index_of, char_at, and join to String module (ec5db9e)
  • string: add string_append_cstr for concatenating with C strings (2293c65)
  • style: add doc comment and tagged union validation (2eda7c2)
  • style: add FERN_STYLE checker and Makefile targets (4bde372)
  • style: add git hygiene and improve style checker (99c723f)
  • style: add uv support and rich TUI to style checker (eae5038)
  • system: add cwd, chdir, hostname, user, home functions (0a2f5d9)
  • test: run @doc examples via fern test --doc (0db0e53)
  • tui: add Panel and Table modules for terminal UI (c8abb2c)
  • tui: add Progress and Spinner modules (Phase 2) (29b6324)
  • tui: add Prompt module for user input (Phase 3) (c5b01b4)
  • tui: add Status badges, Live module, and color palette (665f61b)
  • tui: add Term and Style modules for terminal UI (cfe0d20)
  • tui: rename Prompt module to Tui.Prompt (4fecc75)
  • type: implement type representation and type environment (31176bf)
  • types: make print/println return Unit and support () expressions (6a49bb0)

Bug Fixes

  • arena: prevent memory corruption in large allocations (edca02a)
  • ast: add missing stdint.h include for Linux CI (1aec627)
  • ast: remove extra semicolons from VEC_TYPE macros and simplify expr_call (e9e7b5e)
  • checker: use unify for let statement type checking (537053f)
  • ci: add missing stdint.h include to test_arena.c (98489fd)
  • ci: add POSIX defines to runtime and libgc to lint job (0a61141)
  • ci: install Boehm GC dependency for build (2732076)
  • codegen: handle early return inside nested if blocks (64a117c)
  • codegen: handle pointer return types from built-in functions (ef18785)
  • codegen: improve type handling for tuples and string interpolation (a886a41)
  • codegen: track pointer types for correct QBE type widths (6876dbc)
  • codegen: use correct QBE type for list element push (e4c940b)
  • codegen: use pointer types for list elements and Result unwrap (c1a4346)
  • correct budget understanding - Max Plan provides UNLIMITED usage (dcb2ecb)
  • errors: add POSIX_C_SOURCE for fileno() in strict C11 (27db62b)
  • lexer: handle literal braces in strings correctly (1384b7e)
  • lexer: ignore indentation inside brackets/parens/braces (20bc3b7)
  • lexer: save/restore all state in lexer_peek (20e400b)
  • linenoise: add POSIX_C_SOURCE for strdup/fileno/fchmod (d234fbb)
  • linenoise: add strings.h and BSD defines for strcasecmp (3d3be14)
  • make ralph-iteration.sh portable (remove head -n -1) (2174c31)
  • make ralph-test.sh portable (use sed instead of head -n -1) (ec3d328)
  • parser: add TOKEN_WITH to can_start_block_expr (35dc65d)
  • parser: allow match expressions inside for loops (00c0c9c)
  • parser: parse None as constructor pattern for Option matching (6a11459)
  • parser: prevent postfix if from consuming if keywords after dedent (9ac13e0)
  • parser: support inline if expressions in let bindings (6298638)
  • parser: support multi-line match arms without commas (51c71d2)
  • parser: track newlines to prevent tuple-as-call-args bug (86542f3)
  • qbe: add POSIX_C_SOURCE for fmemopen() in strict C99 (a31d56d)
  • runtime: align Option representation between codegen and runtime (fecc68b)
  • runtime: use heap-allocated Option to support 64-bit pointers (87abf8a)
  • runtime: use heap-allocated Result to support 64-bit values (c9e2e72)
  • style: add FERN_STYLE exceptions and fix void return detection (99071ca)
  • style: handle multi-rule FERN_STYLE allow comments (899166e)
  • style: handle static void and variadic params in checker (7105d5f)
  • tui: Panel ignores empty string titles (82735cd)
  • tui: Panel renders multi-line content correctly (f020b20)

This PR was generated with Release Please. See documentation.

Summary by CodeRabbit

Release Notes

  • New Features

    • Version 0.2.0 released with improvements across runtime, codegen, type system, parser, CLI, and tooling.
  • Breaking Changes

    • Result type representation changed from packed int64 to heap-allocated struct.
  • Bug Fixes

    • Multiple bug fixes across the codebase.
  • Documentation

    • Added comprehensive changelog documenting release contents.

@niklas-heer niklas-heer force-pushed the release-please--branches--main--components--fern branch from e13b6b2 to 460a3e1 Compare February 6, 2026 16:51
@coderabbitai
Copy link

coderabbitai bot commented Feb 6, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Bumps project version from 0.1.0 to 0.2.0: updates release manifest and public version header, and adds a new CHANGELOG.md documenting the 0.2.0 release (breaking change, features, bug fixes).

Changes

Cohort / File(s) Summary
Version Metadata
/.github/.release-please-manifest.json, include/version.h
Updated root version mapping and FERN_VERSION_STRING macro from 0.1.0 to 0.2.0.
Release Notes
CHANGELOG.md
Added comprehensive changelog for 0.2.0 including a BREAKING CHANGES entry (runtime Result representation), Features, and Bug Fixes sections.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐰 I hopped a bump from one to two,
Manifests and headers changed their hue,
A changelog blooms with tales to tell,
I nibble bytes and wag my tail—farewell!

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'chore(main): release fern 0.2.0' accurately describes the primary change—a version release from 0.1.0 to 0.2.0, including changelog documentation and version updates across manifest and header files.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch release-please--branches--main--components--fern

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@CHANGELOG.md`:
- Line 65: The markdown entry contains unescaped asterisks in the C-style block
comment `/* */` which triggers MD037; update the CHANGELOG.md entry for the
lexer line (the commit referenced by 0277001) to wrap the block comment in an
inline code span (i.e., replace `/* */` with backtick-wrapped `/* */`) so the
asterisks are not treated as emphasis, or alternatively fix the original commit
subject that produced this release-please entry.

* **lexer,parser:** implement record update syntax ({ base | field: value }) ([dafe27a](https://github.com/niklas-heer/fern/commit/dafe27a5bb6732efeead02a3445ac62c47ca8c92))
* **lexer,parser:** implement string interpolation ([1d608bb](https://github.com/niklas-heer/fern/commit/1d608bbcaf7fb7d00516fc4df85cf40bf16a66a7))
* **lexer,parser:** implement where clauses on function definitions ([57f94ff](https://github.com/niklas-heer/fern/commit/57f94ff5640d639b6c3527b2e8bb7c0bc880d16a))
* **lexer:** add block comment support (/* */) ([0277001](https://github.com/niklas-heer/fern/commit/0277001b2524bb2e732479b02434d70093e5b4e2))
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Markdown lint: unescaped * in /* */ triggers MD037 (spaces inside emphasis markers).

The C-style block comment syntax /* */ contains bare asterisks that some Markdown renderers may misinterpret as emphasis markers. Wrapping it in an inline code span would fix the lint warning and ensure correct rendering.

Proposed fix
-* **lexer:** add block comment support (/* */) ([0277001](https://github.com/niklas-heer/fern/commit/0277001b2524bb2e732479b02434d70093e5b4e2))
+* **lexer:** add block comment support (`/* */`) ([0277001](https://github.com/niklas-heer/fern/commit/0277001b2524bb2e732479b02434d70093e5b4e2))

Note: Since this file is auto-generated by release-please from the commit message, you may prefer to fix the original commit's subject instead, or accept this as a known cosmetic limitation of the generator.

📝 Committable suggestion

‼️ 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.

Suggested change
* **lexer:** add block comment support (/* */) ([0277001](https://github.com/niklas-heer/fern/commit/0277001b2524bb2e732479b02434d70093e5b4e2))
* **lexer:** add block comment support (`/* */`) ([0277001](https://github.com/niklas-heer/fern/commit/0277001b2524bb2e732479b02434d70093e5b4e2))
🧰 Tools
🪛 markdownlint-cli2 (0.20.0)

[warning] 65-65: Spaces inside emphasis markers

(MD037, no-space-in-emphasis)


[warning] 65-65: Spaces inside emphasis markers

(MD037, no-space-in-emphasis)

🤖 Prompt for AI Agents
In `@CHANGELOG.md` at line 65, The markdown entry contains unescaped asterisks in
the C-style block comment `/* */` which triggers MD037; update the CHANGELOG.md
entry for the lexer line (the commit referenced by 0277001) to wrap the block
comment in an inline code span (i.e., replace `/* */` with backtick-wrapped `/*
*/`) so the asterisks are not treated as emphasis, or alternatively fix the
original commit subject that produced this release-please entry.

@niklas-heer niklas-heer changed the title chore(main): release fern 1.0.0 chore(main): release fern 0.2.0 Feb 6, 2026
@niklas-heer niklas-heer force-pushed the release-please--branches--main--components--fern branch 6 times, most recently from fbebe72 to 5e70153 Compare February 6, 2026 21:39
@niklas-heer niklas-heer force-pushed the release-please--branches--main--components--fern branch from 5e70153 to ddac954 Compare February 9, 2026 09:36
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@CHANGELOG.md`:
- Line 137: Replace the incorrect GitHub user link for the `@doc` annotation in
the changelog entry that currently reads "* **test:** run
[`@doc`](https://github.com/doc) examples via fern test --doc ([0db0e53](...))" by
removing the hyperlink around `@doc` (or changing it to plain `@doc` or to a
proper documentation link) so the annotation is not converted into a GitHub
profile link; update the changelog line accordingly and, if desired, correct the
original commit message that produced this auto-generated entry to prevent
recurrence.

* **style:** add git hygiene and improve style checker ([99c723f](https://github.com/niklas-heer/fern/commit/99c723f60e04012c1766e86aee08c60ff7bffa62))
* **style:** add uv support and rich TUI to style checker ([eae5038](https://github.com/niklas-heer/fern/commit/eae5038d98544c392a9fd5e240b5a15b347eb4ab))
* **system:** add cwd, chdir, hostname, user, home functions ([0a2f5d9](https://github.com/niklas-heer/fern/commit/0a2f5d96466a44c25af92c1a4f9c8ff4d0bfbbf6))
* **test:** run [@doc](https://github.com/doc) examples via fern test --doc ([0db0e53](https://github.com/niklas-heer/fern/commit/0db0e53bd0216af8d7893273267fd1836fd94cc8))
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Incorrect auto-generated link for @doc annotation.

The Release Please generator converted @doc into a GitHub user link pointing to https://github.com/doc, which is likely incorrect. The @doc appears to be a documentation annotation rather than a GitHub mention.

Proposed fix
-* **test:** run [`@doc`](https://github.com/doc) examples via fern test --doc ([0db0e53](https://github.com/niklas-heer/fern/commit/0db0e53bd0216af8d7893273267fd1836fd94cc8))
+* **test:** run `@doc` examples via fern test --doc ([0db0e53](https://github.com/niklas-heer/fern/commit/0db0e53bd0216af8d7893273267fd1836fd94cc8))

Note: Since this file is auto-generated from commit messages, you may prefer to fix the source commit message to prevent recurrence in future releases, or accept this as a known cosmetic limitation.

📝 Committable suggestion

‼️ 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.

Suggested change
* **test:** run [@doc](https://github.com/doc) examples via fern test --doc ([0db0e53](https://github.com/niklas-heer/fern/commit/0db0e53bd0216af8d7893273267fd1836fd94cc8))
* **test:** run `@doc` examples via fern test --doc ([0db0e53](https://github.com/niklas-heer/fern/commit/0db0e53bd0216af8d7893273267fd1836fd94cc8))
🤖 Prompt for AI Agents
In `@CHANGELOG.md` at line 137, Replace the incorrect GitHub user link for the
`@doc` annotation in the changelog entry that currently reads "* **test:** run
[`@doc`](https://github.com/doc) examples via fern test --doc ([0db0e53](...))" by
removing the hyperlink around `@doc` (or changing it to plain `@doc` or to a
proper documentation link) so the annotation is not converted into a GitHub
profile link; update the changelog line accordingly and, if desired, correct the
original commit message that produced this auto-generated entry to prevent
recurrence.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant