AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
Medaka는 정적 타입·인터페이스·효과를 갖춘 실용적인 함수형 언어이며, 브라우저에서 WebAssembly로 컴파일러가 실행됩니다
Medaka is a practical functional language with static types, interfaces, and effects. Try it in your browser: the compiler runs client-side as WebAssembly.
개발 도구Shell · CGitHub @MedakaLang온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A practical functional language
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A practical functional language with static types, interfaces, and effects.
Medaka sits between a cleaned-up OCaml, a practical Haskell, and a
garbage-collected Rust: Hindley-Milner inference, interfaces for ad-hoc
polymorphism, tracked effects, exhaustive pattern matching, and a small
standard library written in the language itself.
The quickest way to try it is the playground, which
runs the full compiler in your browser. The guide
walks through the language from a first program to modules and tooling.README 전문 보기 ↗Medaka sits between a cleaned-up OCaml, a practical Haskell, and a garbage-collected Rust: Hindley-Milner inference, interfaces for ad-hoc polymorphism, tracked effects, exhaustive pattern matching, and a small standard library written in the language itself.
data Shape
= Circle Float
| Rect Float Float
area : Shape -> Float
area (Circle r) = 3.14159 * r * r
area (Rect w h) = w * h
main =
let shapes = [Circle 1.0, Rect 3.0 4.0]
println "areas: \{map area shapes}"
The quickest way to try it is the playground, which runs the full compiler in your browser. The guide walks through the language from a first program to modules and tooling.
The compiler is written in Medaka (compiler/) and compiles itself through a
native LLVM backend to a self-contained binary, reproducing its own output
byte for byte. A second backend targets WasmGC and is what the playground
runs. make medaka builds the compiler from a checked-in IR seed, so the only
toolchain it needs is clang and the Boehm GC. See
compiler/BOOTSTRAP.md for how the self-hosting works.
Open work is tracked in the
0.1.0 milestone and the
issue tracker; PLAN.md
is an older working log, not the current roadmap.
This repository is developed with coding agents. AGENTS.md and .claude/ are their
playbooks; they are the reason the tree carries more process files than a typical project.
Besides the compiler and stdlib/, the repository holds several programs and libraries
written in the language, each with its own medaka.toml:
pds/: a Bluesky Personal Data Server, from HTTP framing and the
cryptographic primitives up.sqlite/: a SQLite file reader and writer with a small SQL engine.parsec/: a general parser-combinator library (sqlite/ uses it).gzip/: a DEFLATE/gzip codec.demo/: two edge plugins used to demonstrate effect-policy checking.Pipeline stages, in order:
compiler/frontend/lexer.mdk (indentation-sensitive)compiler/frontend/parser.mdk (recursive-descent)compiler/frontend/ast.mdkcompiler/frontend/desugar.mdk (deriving → impls, record punning, do-blocks, default-method specialization)compiler/frontend/resolve.mdk (every reference bound; multi-module aware)compiler/types/typecheck.mdk (Hindley-Milner + interfaces + effects + exhaustiveness; marks method dispatch per binding group)compiler/frontend/exhaust.mdk (Maranget pattern-matrix; called from typecheck)compiler/eval/eval.mdk (tree-walking interpreter with dict-passing typeclass dispatch)compiler/ir/core_ir_lower.mdk → compiler/backend/llvm_emit.mdk → clangcompiler/backend/wasm_emit.mdk (2nd backend, browser playground)compiler/driver/loader.mdk + compiler/driver/medaka_cli.mdkcompiler/tools/ (fmt, printer, LSP, doctest, doc, repl, new_cmd, test_cmd, check)Medaka is experimental (0.1.0 preview). The language, compiler, standard library, formatter, linter, language server, and browser playground all work; the surface syntax and library are still settling ahead of a first tagged release. Open work is tracked in GitHub issues.
Medaka builds from source and needs only clang and the Boehm GC. There is no
OCaml, opam, or dune. You also need make, git, and gunzip (the cold build
unpacks the checked-in IR seed with it).
# Debian / Ubuntu
sudo apt install clang libgc-dev
# macOS
brew install bdw-gc
git clone https://github.com/MedakaLang/medaka
cd medaka
make medaka # first build takes a few minutes
export PATH="$PWD:$PATH" # run `medaka` from anywhere
printf 'main = println "Hello world!"\n' > hello.mdk
medaka run hello.mdk
medaka run is the interpreter: it starts at once but runs slowly. For speed, use
medaka build, the fast native path.
The first build bootstraps the compiler from the checked-in seed
(compiler/seed/emitter.ll.gz); later rebuilds are faster. Leave the binary in
the checkout: it finds the standard library relative to its own location, so put
the checkout directory on PATH rather than copying medaka elsewhere.
Linux is the platform CI covers. macOS builds, but that path is verified by hand rather than by CI (#549 (no macOS CI coverage)).
New to the language? Start with the quick start.
medaka check, run, build, fmt, lint, test, doc, repl, lsp, and
new are covered in the guide's
tooling chapter. Build-cache switches,
editor setup (VS Code, Neovim, Helix, Zed), and the source layout are in
docs/ops/TOOLING-REFERENCE.md. The standard
library reference is at medaka-lang.dev/stdlib;
every other document is indexed in docs/README.md.
make preflight # the gates relevant to your diff, derived from it
make test # the in-language suite: doctests, property tests, `test` blocks
make gates # the full differential suite (CI runs this; it is slow locally)
The gates compare the native compiler against captured goldens and against the interpreter, stage by stage, and check that the emitter reproduces itself. AGENTS.md describes the suite and its knobs; see also CONTRIBUTING.md.