Contributing to Open Source ๐ŸŒ since mid 2019.

The V Programming Language

My first open-source organization on which I started to contribute to and done a lot of significant things there. Check out my commits and PRs done by me there!

Highlights

  • Fixed several checker, parser, scanner, and code generation-related issues.
  • Implemented features like operator overloading, syntax highlighting for v doc, match branch range expressions with constants, non-string map keys, support for &&= and ||= operators for boolean, etc.
  • Documented and developed several standard library features.

Limited Operator Overloading

struct Vec {
    x int
    y int
}

fn (a Vec) str() string {
    return '{${a.x}, ${a.y}}'
}

fn (a Vec) + (b Vec) Vec {
    return Vec{a.x + b.x, a.y + b.y}
}

fn (a Vec) - (b Vec) Vec {
    return Vec{a.x - b.x, a.y - b.y}
}

fn main() {
    a := Vec{2, 3}
    b := Vec{4, 5}
    mut c := Vec{1, 2}

    println(a + b) // "{6, 8}"
    println(a - b) // "{-2, -2}"
    c += a
    //^^ autogenerated from + overload
    println(c) // "{3, 5}"
}

Implemented in PRs #7737, #774, 8030, 8067, #8086, #9529 and #9529 and more

Match with Const Expr

const start = 1

const end = 10

c := 2
num := match c {
    start...end {
        1000
    }
    else {
        0
    }
}
println(num)
// 1000

Implemented in PRs #16526 and #19572

&&= and ||= operators

&&= is shorthand for flag = flag && flag2, same for ||=

mut success := true
for mesh in meshes {
    success &&= renderer.draw_skinner_mesh(mesh, app.skinning_m, transform)
    // Same as success = succes && renderer.draw_skinner_mesh(mesh, app.skinning_m, transform)
}

Implemented in PRs #21678 and in #21684

Charm

Charm is an organization where the command line is made glamorous ๐ŸŒ 

I am an active contributor and implemented features there.

vhs

Write terminal GIFs as code for integration testing and demoing your CLI tools.

Implemented Copy + Paste command which copies the given text and paste it in the terminal.

Demo

gif

huh

A simple, powerful library for building interactive forms and prompts in the terminal.

  • Implemented Form.WithTimeout(duration) in #276 which cancels the form in the given duration and closes #166.
  • Implemented Form.WithInput(reader) in #271 which set io.Reader to the input form and closes #270

Nixpkgs

Nixpkgs is a collection of over 100,000 software packages that can be installed with the Nix package manager. It also implements NixOS, a purely-functional Linux distribution.

Learning nix and working as a maintainer for The V Programming Language package since November 2023.

Catppuccin

A community-driven color scheme meant for coding, designing, and much more! ๐Ÿ–Œ๏ธ

A maintainer for The V Programming Language port since October 2023.

V By Examples

V by Example is a direct introduction to V by using annotated program examples.

  • Translated in eight languages.
  • One of the maintainers of the project
  • Covers a lot of topics of V.

GitHub CLI

GitHubโ€™s official command line tool.

  • Fixed an error related to gh install not giving an error if extension already installed with a clear message
  • Implemented in PR #8211
  • Feature released in v2.38.0

Encore

Encore is the Backend Development Platform purpose-built to help you create event-driven and distributed systems.

  • Worked on issue#924 in which optional ? wasn’t added.
  • Fixed in PR #990

PS: To see more of my open-source work, check the GitHub account!