News

Announcements, design posts, and updates from the Bear project.

Release

Bear 0.0.2: The First Release

Bear is officially here. A fork of V, rebuilt with a focus on simplicity, speed, and coroutines.

Today we're releasing Bear 0.0.2, our first public release. Bear is a fork of the V programming language, rebranded and extended with new features.

What's in this release:

  • Full V language compatibility — all .v files compile as before
  • Built-in coroutine support
  • Rebranded compiler, tools, and standard library
  • Complete website and documentation

We forked from V at commit fd150c0596abdaea5a9556c09a64e37b0e60b37a. The entire codebase was rebranded to Bear while preserving the original V syntax and standard library.

Design

Why We Forked V

The reasoning behind creating Bear instead of contributing upstream.

V is a remarkable language. It compiles fast, runs fast, and has a clean design. We used it extensively and learned a lot from its approach.

But we had a different vision for a few things:

  • Coroutines. We wanted first-class coroutine support baked into the language, not as an afterthought.
  • Community direction. We wanted to build our own community with our own values and priorities.
  • Feature pace. We wanted to move fast on specific features without waiting for upstream alignment.

A fork let us pursue our direction while keeping everything that makes V great: the fast compiler, the C backend, the simple syntax, and the rich standard library.

Feature

Coroutines in Bear

How Bear's built-in coroutines work and why they matter.

Coroutines are one of Bear's signature features. Unlike goroutines in Go or threads in Rust, Bear's coroutines are cooperative and deeply integrated with the compiler.

Here's a simple example:

fn worker(id int) {
    println('Worker ${id} starting')
    sleep(100)
    println('Worker ${id} done')
}

fn main() {
    for i in 1 .. 5 {
        go worker(i)
    }
    sleep(200)
}

Coroutines in Bear are lightweight, share the same address space, and are managed by the Bear runtime. They're perfect for I/O-bound work, concurrent data processing, and building responsive applications.