Skip to content

Morphir tooling and bindings to support the Zig language and ecosystem

License

Notifications You must be signed in to change notification settings

finos/morphir-moonbit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Morphir Moonbit Monorepo

FINOS - Incubating CI

A monorepo for Morphir implementation in Moonbit, providing core libraries and bindings for WebAssembly targets.

Overview

This repository contains the Moonbit implementation of Morphir, organized as a monorepo with multiple packages:

  • morphir-sdk: Standard library for Morphir with functional programming primitives
  • morphir-core: Core abstractions and types for the Morphir ecosystem
  • morphir-moonbit-bindings: FFI bindings for Moonbit WASM targets

Prerequisites

  • mise - Development environment manager
  • All other tools (Moonbit, Bun, yamllint, uv) are managed by mise

Installation

  1. Install mise by following the official installation guide

  2. Clone the repository:

    git clone https://github.com/finos/morphir-moonbit.git
    cd morphir-moonbit
  3. Install tools:

    mise install

Note: Git hooks are automatically installed when you enter the directory via mise. The pre-push hook enforces lint, format, and validation checks before allowing pushes, preventing CI failures by catching issues locally.

Development

Pre-Push Validation

⚠️ Important: All code must pass lint, format, and validation checks before pushing.

The pre-push hook automatically runs these checks, but you can run them manually:

# Run all checks
mise run check

# Or individual checks
mise run lint           # Linting
mise run lint:moonbit   # Format check  
mise run validate       # Validation

Available Tasks

All development tasks are managed through mise. You can list all available tasks with:

mise tasks

Linting

# Run all linting tasks
mise run lint

# Lint YAML files only
mise run lint:yaml

# Check Moonbit code formatting
mise run lint:moonbit

Formatting

# Format all Moonbit code
mise run format

Building

# Build all packages for all targets
mise run build

# Build for WASI target only
mise run build:wasi

# Build for browser (WASM-GC) target only
mise run build:browser

Testing

# Run all tests
mise run test

Validation

# Run all validation checks (YAML lint + package structure)
mise run validate

# Verify package structure only
mise run validate:packages

Project Structure

morphir-moonbit/
├── .config/
│   └── mise/
│       ├── config.toml          # Mise configuration
│       └── tasks/               # Task definitions
│           ├── lint/
│           ├── format/
│           ├── build/
│           └── test/
├── .github/
│   └── workflows/
│       └── ci.yml               # CI workflow
├── pkgs/                        # Moonbit packages
│   ├── morphir-sdk/
│   ├── morphir-core/
│   └── morphir-moonbit-bindings/
└── moon.mod.json                # Root module configuration

Build Targets

The project supports two WebAssembly targets:

  1. WASI (wasm): For server-side and command-line applications
  2. Browser (wasm-gc): For browser-based applications with WASM-GC support

AI Agent Skills

This repository includes AI agent skills following the Agent Skills specification. These skills enhance AI coding assistants with project-specific knowledge.

Available Skills:

  • code-reviewer: Comprehensive code review for PRs and changes

Supported Agents: Claude, GitHub Copilot, OpenAI Codex, Cursor, Windsurf, Google Antigravity

See .github/AGENTS.md for more information.

Contributing

For any questions, bugs or feature requests please open an issue. For anything else please send an email to morphir@finos.org.

To submit a contribution:

  1. Fork it (https://github.com/finos/morphir-moonbit/fork)
  2. Create your feature branch (git checkout -b feature/fooBar)
  3. Read our contribution guidelines and Community Code of Conduct
  4. Commit your changes (git commit -am 'Add some fooBar')
  5. Push to the branch (git push origin feature/fooBar)
  6. Create a new Pull Request

NOTE: Commits and pull requests to FINOS repositories will only be accepted from those contributors with an active, executed Individual Contributor License Agreement (ICLA) with FINOS OR who are covered under an existing and active Corporate Contribution License Agreement (CCLA) executed with FINOS. Commits from individuals not covered under an ICLA or CCLA will be flagged and blocked by the FINOS Clabot tool (or EasyCLA). Please note that some CCLAs require individuals/employees to be explicitly named on the CCLA.

Need an ICLA? Unsure if you are covered under an existing CCLA? Email help@finos.org

License

Copyright 2026 FINOS

Distributed under the Apache License, Version 2.0.

SPDX-License-Identifier: Apache-2.0

About

Morphir tooling and bindings to support the Zig language and ecosystem

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •