Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Emela Specification

Emela は Native と WebAssembly へのコンパイルを想定した、実験的な関数型言語です。

このリポジトリでは、言語仕様を小さな単位で段階的に定めます。各トピックはまず 小さな仕様ドラフトとして作成し、未解決の設計論点が解消されたものだけを安定化 します。

Goals

  • コア言語は、ゼロから実装できる程度に小さく保つ。
  • 実行時の挙動は明示的に定義し、Native/WASM 間で移植可能にする。
  • 言語境界では、型付きの関数型セマンティクスと明示的な effect tracking を優先する。
  • 実装戦略より先に、観測可能な挙動を仕様化する。

Non-Goals

  • 最初のバージョンで大きな標準ライブラリを持つこと。
  • コアセマンティクスが安定する前に高度な最適化規則を定めること。
  • ターゲットごとにプログラムの意味が変わる挙動を許すこと。

二層構成(RFC とリファレンス)

仕様は目的の異なる2層に分かれます。読む場所は目的で決めます。

場所 何を書くか いつ読むか
熟議ログ(RFC) specs/ 変更を主張した時点の議論・動機・経緯。番号付き。supersede も差分表現もここでは正常。 なぜ そうなったか
リファレンス reference/ 現在の規範。トピック別・現在形・自己完結。supersede チェーンを持たない。 今どうか

言語を学ぶ・実装する・参照するときは reference/ を読みます。specs/ は経緯を辿るための ログです。リファレンスの書き方の規律は reference/README.md にあります。

Specification Format

以下は specs/(RFC 層)のファイル構造です。

各仕様ファイルは次の構造を使います。

# NNNN: Title

Status: Draft | Accepted | Superseded

## Summary

機能または規則の短い説明。

## Motivation

なぜ今この仕様が必要か。

## Specification

規範的な規則。必要に応じて MUST, MUST NOT, SHOULD, MAY を使う。

## Examples

小さなソース例と期待される意味。

## Compilation Notes

Native/WASM への lowering 制約、ABI、表現、実装上の注意。
明示しない限り、この節は非規範的な補足とする。

## Open Questions

Accepted にする前に解くべき未解決事項。

仕様ファイルは specs/ に置き、ゼロ埋めの番号プレフィックスを付けます。specs/熟議ログ(RFC) です(下記「二層構成」)。ある変更を主張した時点の記録なので、 基本は append-only ですが、Accepted 仕様も必要に応じて直接改訂してよいものとします (supersede する新仕様を必ず立てる、という旧ルールは廃止しました)。

「今どう振る舞うか」は specs/ ではなく reference/ を参照します。

Current Drafts

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors