?? Contributing to Ifá-Lang

Thank you for your interest in contributing! This guide will help you get started.

Getting Started

Prerequisites

Clone and Build

# Clone the repository
git clone https://github.com/ifá-lang/ifa_lang.git
cd ifa_lang

# Build all crates
cargo build --workspace

# Run tests
cargo test --workspace

# Build CLI
cargo build -p ifa-cli --release

Project Structure

crates/
+-- ifa-core/          # Core runtime (VM, parser, interpreter)
+-- ifa-std/           # Standard library (16 domains + stacks + infra)
+-- ifa-cli/           # Command-line interface
+-- ifa-babalawo/      # Linter and LSP
+-- ifa-sandbox/       # WASM sandbox
+-- ifa-wasm/          # Browser bindings
+-- ifa-embedded/      # no_std runtime
+-- ifa-macros/        # Procedural macros
+-- ifa-installer-*/   # Installer components
+-- ifa-types/         # Shared type definitions

Development Workflow

1. Create a Branch

git checkout -b feature/your-feature-name

2. Make Changes

# Run tests frequently
cargo test -p ifa-core

# Check formatting
cargo fmt --check

# Run clippy
cargo clippy --workspace

3. Submit a PR

Code Style

Areas to Contribute

Good First Issues

Feature Development

Running the Playground

# Build WASM
cd crates/ifa-wasm
wasm-pack build --target web --out-dir ../../../../../../../docs/pkg

# Serve docs locally
cd docs
python -m http.server 8000
# Open http://localhost:8000/playground.html

Community