Implementation: - Add make_pattern2_scope_manager() helper for DRY - Header conditions use ExprLowerer for supported patterns - Legacy fallback for unsupported patterns - Fail-Fast on supported patterns that fail Tests: - 4 new tests (all pass) - test_expr_lowerer_supports_simple_header_condition_i_less_literal - test_expr_lowerer_supports_header_condition_var_less_var - test_expr_lowerer_header_condition_generates_expected_instructions - test_pattern2_header_condition_via_exprlowerer Also: Archive old phase documentation (34k lines removed) ð€ Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
26 KiB
Status: Historical
ç°å¢å€æ°åŸ¹åºèª¿æ»ã¬ããŒã - 25åãã5åãžã®åæžèšç»
äœææ¥: 2025-11-21 ç®ç: ã»ã«ããã¹ãã£ã³ã°å®è£ ã«ãããç°å¢å€æ°ã®è€éããæ ¹æ¬è§£æ±º
ð 䜿çšç®æãããªãã¯ã¹
| ç°å¢å€æ° | å®çŸ©ç®æ | èªã¿åãåæ° | 圱é¿ç¯å² | ããã©ã«ãå€ | ã«ããŽãª |
|---|---|---|---|---|---|
| Stage1é¢é£ | |||||
NYASH_USE_STAGE1_CLI |
stage1_bridge.rs:93 | 7å | å¿ é ïŒStage1èµ·åïŒ | ãªã | Stage1å¶åŸ¡ |
STAGE1_EMIT_PROGRAM_JSON |
stage1_bridge.rs:118 | 5å | ãªãã·ã§ã³ïŒemit modeïŒ | OFF | Stage1å¶åŸ¡ |
STAGE1_EMIT_MIR_JSON |
stage1_bridge.rs:119 | 5å | ãªãã·ã§ã³ïŒemit modeïŒ | OFF | Stage1å¶åŸ¡ |
STAGE1_BACKEND |
stage1_bridge.rs:157 | 5å | ãªãã·ã§ã³ïŒbackendéžæïŒ | vm | Stage1å¶åŸ¡ |
STAGE1_SOURCE |
stage1_bridge.rs:115 | 6å | ãªãã·ã§ã³ïŒå ¥åãœãŒã¹ïŒ | 第1åŒæ° | Stage1å¶åŸ¡ |
STAGE1_INPUT |
stage1_bridge.rs:116 | 1å | ãªãã·ã§ã³ïŒå ¥åãœãŒã¹å¥åïŒ | ãªã | Stage1å¶åŸ¡ |
STAGE1_PROGRAM_JSON |
stage1_bridge.rs:135 | 5å | ãªãã·ã§ã³ïŒäžéJSONïŒ | ãªã | Stage1å¶åŸ¡ |
STAGE1_CLI_DEBUG |
stage1_cli.hako:27 | 11å | ãªãã·ã§ã³ïŒãããã°ïŒ | OFF | ãããã° |
NYASH_STAGE1_CLI_CHILD |
stage1_bridge.rs:90 | 3å | å¿ é ïŒååž°é²æ¢ïŒ | OFF | å éšå¶åŸ¡ |
| Using/Parseré¢é£ | |||||
NYASH_ENABLE_USING |
env.rs:429 | 10å | ãªãã·ã§ã³ | ONïŒããã©ã«ãïŒ | æ©èœãã°ã« |
HAKO_ENABLE_USING |
env.rs:435 | 8å | éæšå¥šïŒäºææ§ïŒ | ãªã | 廿¢äºå® |
HAKO_STAGEB_APPLY_USINGS |
stage1_bridge.rs:224 | 6å | ãªãã·ã§ã³ | ON | Stage1å¶åŸ¡ |
NYASH_PARSER_STAGE3 |
env.rs:540 | 38å | ãªãã·ã§ã³ | OFF | æ©èœãã°ã« |
HAKO_PARSER_STAGE3 |
env.rs:543 | 15å | éæšå¥šïŒäºææ§ïŒ | ãªã | 廿¢äºå® |
| Runtime/Pluginé¢é£ | |||||
NYASH_DISABLE_PLUGINS |
plugins.rs:26 | 20å | ãªãã·ã§ã³ | OFF | ãã©ã°ã€ã³å¶åŸ¡ |
NYASH_FILEBOX_MODE |
provider_env.rs:37 | 8å | ãªãã·ã§ã³ | auto | ãã©ã°ã€ã³å¶åŸ¡ |
NYASH_BOX_FACTORY_POLICY |
mod.rs:135 | 9å | ãªãã·ã§ã³ | builtin_first | ãã©ã°ã€ã³å¶åŸ¡ |
| Module/Configé¢é£ | |||||
HAKO_STAGEB_MODULES_LIST |
stage1_bridge.rs:239 | 5å | ãªãã·ã§ã³ïŒã¢ãžã¥ãŒã«äžèŠ§ïŒ | ãªã | Stage1å¶åŸ¡ |
NYASH_CONFIG |
ãªã | 0å | æªäœ¿çš | ãªã | å逿žã¿ïŒ2025-11ïŒ |
| Entry/Executioné¢é£ | |||||
NYASH_ENTRY |
stage1_bridge.rs:185 | 6å | ãªãã·ã§ã³ | Stage1CliMain.main/1 | ãšã³ããªãŒå¶åŸ¡ |
NYASH_SCRIPT_ARGS_JSON |
stage1_bridge.rs:167 | 13å | ãªãã·ã§ã³ | [] | åŒæ°æž¡ã |
NYASH_ENTRY_ALLOW_TOPLEVEL_MAIN |
env.rs:576 | 8å | ãªãã·ã§ã³ | ONïŒããã©ã«ãïŒ | ãšã³ããªãŒå¶åŸ¡ |
| Debug/Verboseé¢é£ | |||||
NYASH_CLI_VERBOSE |
mod.rs:317 | 45å | ãªãã·ã§ã³ | OFF | ãããã° |
NYASH_DEBUG |
ãªã | 0å | æªäœ¿çš â 2025-11 åé€ | ãªã | å逿žã¿ |
NYASH_NYRT_SILENT_RESULT |
stage1_bridge.rs:212 | 2å | ãªãã·ã§ã³ | OFF | åºåå¶åŸ¡ |
åèš: 25å â çŸåš 23åïŒNYASH_CONFIG / NYASH_DEBUG åé€åŸïŒ
- 䜿çšäž: 23å â 21å
- æªäœ¿çš: 0åïŒä»åã®2åãå逿žã¿ïŒ
- éæšå¥š: 2åïŒHAKO_ENABLE_USING, HAKO_PARSER_STAGE3ïŒ
ð äŸåé¢ä¿åæ
ã°ã«ãŒã1: Stage1å¶åŸ¡ïŒ9å â 3åã«çµ±åå¯èœïŒ
æä»çé¢ä¿:
STAGE1_EMIT_PROGRAM_JSON=1 ââ
âââ æä»çïŒ1ã€ã ãæå¹ïŒ
STAGE1_EMIT_MIR_JSON=1 ââ€
â
ïŒãªãïŒå®è¡ã¢ãŒãïŒ ââ
çµ±åæ¡:
# çŸåšã®è€éãªèšå®
NYASH_USE_STAGE1_CLI=1 STAGE1_EMIT_PROGRAM_JSON=1 STAGE1_SOURCE=foo.hako
# çµ±ååŸïŒã·ã³ãã«ïŒ
NYASH_STAGE1_MODE=emit-program NYASH_STAGE1_INPUT=foo.hako
æ°å€æ°: NYASH_STAGE1_MODE
- å€:
emit-program | emit-mir | run - ããã©ã«ã:
run - 广:
emit-programâSTAGE1_EMIT_PROGRAM_JSON=1emit-mirâSTAGE1_EMIT_MIR_JSON=1runâ å®è¡ã¢ãŒã
åæžã§ãã倿°:
NYASH_USE_STAGE1_CLIâNYASH_STAGE1_MODEã®ååšã§å€å®STAGE1_EMIT_PROGRAM_JSONâNYASH_STAGE1_MODE=emit-programSTAGE1_EMIT_MIR_JSONâNYASH_STAGE1_MODE=emit-mirSTAGE1_SOURCE+STAGE1_INPUTâNYASH_STAGE1_INPUTã«çµ±å
ã°ã«ãŒã2: Usingå¶åŸ¡ïŒ4å â 1åã«çµ±åïŒ
çµ±åæ¡:
# çŸåšã®è€éãªèšå®
NYASH_ENABLE_USING=1 HAKO_ENABLE_USING=1 HAKO_STAGEB_APPLY_USINGS=1
# çµ±ååŸ
NYASH_FEATURES=using # ã«ã³ãåºåãã§è€æ°æ©èœå¯Ÿå¿
åæžã§ãã倿°:
NYASH_ENABLE_USINGâNYASH_FEATURES=usingHAKO_ENABLE_USINGâ 廿¢ïŒäºææ§ãšã€ãªã¢ã¹åé€ïŒHAKO_STAGEB_APPLY_USINGSâNYASH_FEATURES=usingã§èªå
ã°ã«ãŒã3: Parserå¶åŸ¡ïŒ2å â 1åã«çµ±åïŒ
çµ±åæ¡:
# çŸåš
NYASH_PARSER_STAGE3=1 HAKO_PARSER_STAGE3=1
# çµ±ååŸ
NYASH_FEATURES=stage3 # ãŸã㯠NYASH_PARSER_FEATURES=stage3
åæžã§ãã倿°:
NYASH_PARSER_STAGE3âNYASH_FEATURES=stage3HAKO_PARSER_STAGE3â 廿¢
ã°ã«ãŒã4: Pluginå¶åŸ¡ïŒ3å â ç¶æïŒ
çŸç¶ç¶ææšå¥š:
NYASH_DISABLE_PLUGINS: å šãã©ã°ã€ã³ç¡å¹åïŒéèŠïŒNYASH_FILEBOX_MODE: FileBox詳现å¶åŸ¡NYASH_BOX_FACTORY_POLICY: Box Factoryåªå é äœ
çç±: ç¬ç«ããæ©èœã§çµ±åããã¡ãªãããå°ãªã
ã°ã«ãŒã5: Debugå¶åŸ¡ïŒ3å â 1åã«çµ±åïŒ
çµ±åæ¡:
# çŸåš
NYASH_CLI_VERBOSE=1 STAGE1_CLI_DEBUG=1
# çµ±ååŸ
NYASH_DEBUG=1 # ãŸã㯠NYASH_DEBUG_LEVEL=1
åæžã§ãã倿°:
NYASH_CLI_VERBOSEâNYASH_DEBUG=1STAGE1_CLI_DEBUGâNYASH_DEBUG=1NYASH_NYRT_SILENT_RESULTâNYASH_DEBUG=0ã®æã«èªåON
ð åæžããŒãããã
Phase 1ïŒå³åº§ã«åé€å¯èœ - 2åïŒ
å®å šæªäœ¿çšïŒ0ååç §ïŒ:
åé€å¯Ÿè±¡ïŒå®æœæžã¿ïŒ:
- â
NYASH_CONFIG: 䜿çšç®æ0åïŒå®å šæªäœ¿çšãå°æ¥æ§æ³ã®ã¿ïŒâ tools/stage1_* ããé€å»æžã¿ã - â
NYASH_DEBUG: 䜿çšç®æ0åïŒNYASH_DEBUG_* ã¯å¥å€æ°ãPhase 10æ§æ³ã®ã¿ïŒâ tools/stage1_* ããé€å»æžã¿ã
圱é¿: ãªãïŒèª°ã䜿ã£ãŠããªãïŒãåé€ã¯å®äºæžã¿ã
Phase 2ïŒéæšå¥šãšã€ãªã¢ã¹åé€ - 2åïŒ
廿¢äºå®ïŒäºææ§ã®ã¿ïŒ:
åé€å¯Ÿè±¡:
- â ïž
HAKO_ENABLE_USINGâNYASH_ENABLE_USINGã«ç§»è¡ïŒèŠåæžã¿ïŒ - â ïž
HAKO_PARSER_STAGE3âNYASH_PARSER_STAGE3ã«ç§»è¡ïŒèŠåæžã¿ïŒ
圱é¿: èŠåãåºãŠããã®ã§ç§»è¡æžã¿ã®ã¯ã
å®è£
: src/config/env.rs ããäºææ§åŠçãåé€
Phase 3ïŒStage1çµ±å - 7å â 3åïŒ
çµ±å倿°ã»ãã:
# æ°èšèš
NYASH_STAGE1_MODE=<emit-program|emit-mir|run>
NYASH_STAGE1_INPUT=<source.hako>
NYASH_STAGE1_BACKEND=<vm|llvm|pyvm> # ãªãã·ã§ã³
åæžã§ãã倿°ïŒ7å â 3åïŒ:
NYASH_USE_STAGE1_CLIâ MODEååšã§èªåå€å®STAGE1_EMIT_PROGRAM_JSONâMODE=emit-programSTAGE1_EMIT_MIR_JSONâMODE=emit-mirSTAGE1_SOURCE+STAGE1_INPUTâNYASH_STAGE1_INPUTSTAGE1_BACKENDâNYASH_STAGE1_BACKENDSTAGE1_PROGRAM_JSONâ äžéãã¡ã€ã«ïŒç°å¢å€æ°äžèŠïŒ
ä¿æãã倿°:
NYASH_STAGE1_CLI_CHILD: å éšå¶åŸ¡ïŒå€éšéå ¬éïŒ
Phase 4ïŒUsing/Parserçµ±å - 4å â 1åïŒ
çµ±å倿°:
# æ°èšèš
NYASH_FEATURES=<using,stage3,unified-members> # ã«ã³ãåºåã
åæžã§ãã倿°:
NYASH_ENABLE_USINGâFEATURES=usingHAKO_STAGEB_APPLY_USINGSâFEATURES=usingã§èªåNYASH_PARSER_STAGE3âFEATURES=stage3
Phase 5ïŒDebugçµ±å - 3å â 1åïŒ
çµ±å倿°:
# æ°èšèš
NYASH_DEBUG=<0|1|2|3> # ã¬ãã«å¶åŸ¡
åæžã§ãã倿°:
NYASH_CLI_VERBOSEâDEBUG=1STAGE1_CLI_DEBUGâDEBUG=2ïŒè©³çްïŒNYASH_NYRT_SILENT_RESULTâDEBUG=0ã§èªåON
Phase 6ïŒnyash.tomlå - 4åïŒ
æ°žç¶èšå®ã«ç§»åãã¹ã倿°:
[runtime]
disable_plugins = false
filebox_mode = "auto"
box_factory_policy = "builtin_first"
[entry]
allow_toplevel_main = true
åæžã§ãã倿°ïŒç°å¢å€æ° â èšå®ãã¡ã€ã«ïŒ:
NYASH_DISABLE_PLUGINSâruntime.disable_pluginsNYASH_FILEBOX_MODEâruntime.filebox_modeNYASH_BOX_FACTORY_POLICYâruntime.box_factory_policyNYASH_ENTRY_ALLOW_TOPLEVEL_MAINâentry.allow_toplevel_main
泚æ: ç°å¢å€æ°ã¯ç·æ¥æãªãŒããŒã©ã€ãçšã«æ®ã
ð¯ æçµæšå¥š5倿°ã»ãã
Phase 1-5å®äºåŸã®çæ³åœ¢:
# 1. ã¢ãŒãå¶åŸ¡ïŒStage1ïŒ
NYASH_STAGE1_MODE=<emit-program|emit-mir|run>
# 2. å
¥åãœãŒã¹
NYASH_STAGE1_INPUT=<source.hako>
# 3. ãããã°ã¬ãã«
NYASH_DEBUG=<0|1|2|3>
# 4. æ©èœãã°ã«
NYASH_FEATURES=<using,stage3,unified-members>
# 5. ããã¯ãšã³ãéžæ
NYASH_STAGE1_BACKEND=<vm|llvm|pyvm>
åæžå®çžŸ: 25å â 5åïŒ80%åæžïŒ
è£å©å€æ°ïŒå éšå¶åŸ¡ã»ç¹æ®çšéïŒ:
NYASH_STAGE1_CLI_CHILD: ååž°é²æ¢ïŒå€éšéå ¬éïŒNYASH_SCRIPT_ARGS_JSON: åŒæ°æž¡ãïŒèªåçæïŒHAKO_STAGEB_MODULES_LIST: ã¢ãžã¥ãŒã«äžèЧïŒèªåçæïŒNYASH_ENTRY: ãšã³ããªãŒãã€ã³ãïŒç¹æ®çšéïŒ
nyash.tomlåïŒç°å¢å€æ°ããèšå®ãã¡ã€ã«ãžïŒ:
NYASH_DISABLE_PLUGINSNYASH_FILEBOX_MODENYASH_BOX_FACTORY_POLICYNYASH_ENTRY_ALLOW_TOPLEVEL_MAIN
ð åæžå¹æãŸãšã
| Phase | åæžæ° | æ®æ° | åæžç |
|---|---|---|---|
| éå§ | - | 25å | - |
| Phase 1ïŒæªäœ¿çšåé€ïŒ | 2å | 23å | 8% |
| Phase 2ïŒéæšå¥šåé€ïŒ | 2å | 21å | 16% |
| Phase 3ïŒStage1çµ±åïŒ | 4å | 17å | 32% |
| Phase 4ïŒUsing/Parserçµ±åïŒ | 3å | 14å | 44% |
| Phase 5ïŒDebugçµ±åïŒ | 2å | 12å | 52% |
| Phase 6ïŒnyash.tomlåïŒ | 4å | 8å | 68% |
| è£å©å€æ°ç§»ååŸ | - | 5åïŒå ¬éïŒ | 80%åæž |
è£å©å€æ°ïŒ4åïŒ:
NYASH_STAGE1_CLI_CHILDïŒå éšïŒNYASH_SCRIPT_ARGS_JSONïŒèªåçæïŒHAKO_STAGEB_MODULES_LISTïŒèªåçæïŒNYASH_ENTRYïŒç¹æ®çšéïŒ
ð å®è£ åªå 床
ðŽ é«åªå 床ïŒå³åº§ã«å®è¡ïŒ
- Phase 1: å®å
šæªäœ¿çšåé€ïŒ2åïŒ
- 圱é¿: ãªã
- äœæ¥æé: 5å
- ã³ãã³ã: äžèšåç §
ð¡ äžåªå 床ïŒ1é±é以å ïŒ
- Phase 2: éæšå¥šãšã€ãªã¢ã¹åé€ïŒ2åïŒ
- 圱é¿: èŠå衚瀺æžã¿
- äœæ¥æé: 30å
- 泚æ: 1ãªãªãŒã¹åŸã«å逿šå¥š
ð¢ äœåªå 床ïŒèšèšæ€èšãå¿ èŠïŒ
-
Phase 3-5: çµ±å倿°èšèšïŒ9ååæžïŒ
- 圱é¿: 倧ããïŒç Žå£ç倿ŽïŒ
- äœæ¥æé: 2-3æ¥
- èŠä»¶: ç§»è¡ãã¹èšèš
-
Phase 6: nyash.tomlåïŒ4ååæžïŒ
- 圱é¿: äžïŒç°å¢å€æ°æ®ãïŒ
- äœæ¥æé: 1æ¥
- èŠä»¶: TOMLèªã¿èŸŒã¿å®è£
ð åŠãã ããš
-
80/20ã«ãŒã«é©çš:
- æªäœ¿çšå€æ°2åïŒ8%ïŒãåé€ããã ãã§å³å¹æ
- éæšå¥šå€æ°2åïŒ8%ïŒãç°¡åã«åé€å¯èœ
- åèš16%ãç°¡åã«åæžã§ãã
-
çµ±åå¯èœæ§ã®çºèŠ:
- Stage1é¢é£7å â 3åïŒæä»çå¶åŸ¡ïŒ
- Using/Parseré¢é£4å â 1åïŒæ©èœãã©ã°çµ±åïŒ
- Debugé¢é£3å â 1åïŒã¬ãã«å¶åŸ¡çµ±åïŒ
-
nyash.tomlåã®ãã£ã³ã¹:
- Pluginå¶åŸ¡3åã¯æ°žç¶èšå®åã
- Entryå¶åŸ¡1åãæ°žç¶èšå®åã
- ç°å¢å€æ°ã¯ç·æ¥æãªãŒããŒã©ã€ãå°çšã«
-
å éšå€æ°ã®åé¢:
NYASH_STAGE1_CLI_CHILDïŒååž°é²æ¢ïŒNYASH_SCRIPT_ARGS_JSONïŒèªåçæïŒ- ãããã¯å ¬éAPIããé€å€å¯èœ
ð åèæ å ±
äž»èŠãã¡ã€ã«:
src/runner/stage1_bridge.rs: Stage1å¶åŸ¡src/config/env.rs: ç°å¢å€æ°èªã¿åãsrc/config/provider_env.rs: Providerå¶åŸ¡lang/src/runner/stage1_cli.hako: Stage1 CLIå®è£tools/stage1_debug.sh: ãããã°ããŒã«
çŸåšã®ç¶æ³:
- åèš25åã®ç°å¢å€æ°
- 䜿çšäž23åãæªäœ¿çš2å
- éæšå¥š2åïŒèŠåä»ãïŒ
ð äŸåé¢ä¿ã°ã©ãïŒèŠèŠåïŒ
ã°ã«ãŒãæ§é
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â Stage1å¶åŸ¡ã°ã«ãŒãïŒ9å â 3åã«çµ±åå¯èœïŒ â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â â
â ââ NYASH_USE_STAGE1_CLI âââââ â
â â â â
â ââ STAGE1_EMIT_PROGRAM_JSON ââŒââ NYASH_STAGE1_MODE â
â â â (emit-program|emit-mir|run)â
â ââ STAGE1_EMIT_MIR_JSON ââââââ â
â â
â ââ STAGE1_SOURCE âââââââââââââ â
â â âââ NYASH_STAGE1_INPUT â
â ââ STAGE1_INPUT ââââââââââââââ â
â â
â STAGE1_BACKEND ââââââââââââââââ NYASH_STAGE1_BACKEND â
â â
â STAGE1_PROGRAM_JSON âââââââââââ ïŒåé€ïŒäžéãã¡ã€ã«ïŒ â
â â
â NYASH_STAGE1_CLI_CHILD ââââââââ ïŒä¿æïŒå
éšå¶åŸ¡ïŒ â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â Using/Parserå¶åŸ¡ã°ã«ãŒãïŒ4å â 1åã«çµ±åïŒ â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â â
â ââ NYASH_ENABLE_USING âââââââ â
â â â â
â ââ HAKO_ENABLE_USING âââââââââŒââ NYASH_FEATURES=using â
â â ïŒéæšå¥šã»å»æ¢äºå®ïŒ â â
â â â â
â ââ HAKO_STAGEB_APPLY_USINGS ââ â
â â
â ââ NYASH_PARSER_STAGE3 ââââââ â
â â âââ NYASH_FEATURES=stage3 â
â ââ HAKO_PARSER_STAGE3 ââââââââ â
â ïŒéæšå¥šã»å»æ¢äºå®ïŒ â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â Debugå¶åŸ¡ã°ã«ãŒãïŒ3å â 1åã«çµ±åïŒ â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â â
â ââ NYASH_CLI_VERBOSE ââââââââ â
â â â â
â ââ STAGE1_CLI_DEBUG ââââââââââŒââ NYASH_DEBUG=<0|1|2|3> â
â â â â
â ââ NYASH_NYRT_SILENT_RESULT ââ â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â Pluginå¶åŸ¡ã°ã«ãŒãïŒ3å â ç¶æïŒ â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â â
â NYASH_DISABLE_PLUGINS âââââââââ ïŒç¶æã»éèŠïŒ â
â NYASH_FILEBOX_MODE ââââââââââââ ïŒç¶æã»éèŠïŒ â
â NYASH_BOX_FACTORY_POLICY ââââââ ïŒç¶æã»éèŠïŒ â
â â
â â» Phase 6ã§ nyash.toml åæšå¥š â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â åé€å¯èœã°ã«ãŒãïŒ2åïŒ â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â â
â NYASH_CONFIG âââââââââââââââââââ ïŒåé€ïŒæªäœ¿çšïŒ â
â NYASH_DEBUG ââââââââââââââââââââ ïŒåé€ïŒæªäœ¿çšïŒ â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â è£å©å€æ°ã°ã«ãŒãïŒ4å â å
éšå¶åŸ¡ã»èªåçæïŒ â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â â
â NYASH_ENTRY ââââââââââââââââââââ ïŒç¹æ®çšéïŒ â
â NYASH_SCRIPT_ARGS_JSON âââââââââ ïŒèªåçæïŒ â
â HAKO_STAGEB_MODULES_LIST âââââââ ïŒèªåçæïŒ â
â NYASH_ENTRY_ALLOW_TOPLEVEL_MAIN â ïŒnyash.tomlåæšå¥šïŒ â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
æä»çé¢ä¿
Stage1ã¢ãŒãïŒæä»çïŒ:
âââââââââââââââââââââââ
â emit-program â â STAGE1_EMIT_PROGRAM_JSON=1
âââââââââââââââââââââââ€
â emit-mir â â STAGE1_EMIT_MIR_JSON=1
âââââââââââââââââââââââ€
â run (default) â â äž¡æ¹OFF
âââââââââââââââââââââââ
â» åæã«è€æ°ONã«ã¯ã§ããªãïŒæä»çïŒ
çµ±ååŸã®æçµåœ¢æ
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â å
¬éç°å¢å€æ°ïŒ5åïŒ â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â â
â 1. NYASH_STAGE1_MODE : emit-program|emit-mir|run â
â 2. NYASH_STAGE1_INPUT : <source.hako> â
â 3. NYASH_DEBUG : 0|1|2|3 â
â 4. NYASH_FEATURES : using,stage3,unified-members â
â 5. NYASH_STAGE1_BACKEND : vm|llvm|pyvm â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â å
éšå€æ°ïŒ4åã»éå
¬éïŒ â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â â
â - NYASH_STAGE1_CLI_CHILD : ååž°é²æ¢ïŒèªåèšå®ïŒ â
â - NYASH_SCRIPT_ARGS_JSON : åŒæ°æž¡ãïŒèªåçæïŒ â
â - HAKO_STAGEB_MODULES_LIST : ã¢ãžã¥ãŒã«äžèЧïŒèªåçæïŒ â
â - NYASH_ENTRY : ãšã³ããªãŒãã€ã³ãïŒç¹æ®ïŒ â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â nyash.toml èšå®ïŒ4åïŒ â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â â
â [runtime] â
â disable_plugins = false â
â filebox_mode = "auto" â
â box_factory_policy = "builtin_first" â
â â
â [entry] â
â allow_toplevel_main = true â
â â
â â» ç°å¢å€æ°ã§ç·æ¥æãªãŒããŒã©ã€ãå¯èœ â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
åæžå®çžŸ: 25å â 5åïŒå
¬éïŒ + 4åïŒå
éšïŒ = 9å
åæžç: 64%ïŒ25â9ïŒ or 80%ïŒ25â5 å
¬éã®ã¿ïŒ
ç§»è¡ãã¹
Phase 1 (å³åº§)
25å âââ¬â åé€2å ââââ 23å
â (NYASH_CONFIG, NYASH_DEBUG)
â
Phase 2 (1é±é)
23å âââ¬â åé€2å ââââ 21å
â (HAKO_ENABLE_USING, HAKO_PARSER_STAGE3)
â
Phase 3 (2-3æ¥)
21å âââ¬â çµ±å4å ââââ 17å
â (Stage1: 9åâ3åã§4ååæž)
â
Phase 4 (1-2æ¥)
17å âââ¬â çµ±å3å ââââ 14å
â (Using/Parser: 4åâ1åã§3ååæž)
â
Phase 5 (1æ¥)
14å âââ¬â çµ±å2å ââââ 12å
â (Debug: 3åâ1åã§2ååæž)
â
Phase 6 (1æ¥)
12å âââŽâ tomlå4å âââ 8å
(ç°å¢å€æ°æ®ãã»èšå®ãã¡ã€ã«åªå
)
Final: 8åïŒå
¬é5å + å
éš3åïŒ
â æ¬¡ã®ã¢ã¯ã·ã§ã³
- ä»ããå®è¡ïŒ5åïŒ: Phase 1 - æªäœ¿çšå€æ°2ååé€
- 1é±é以å ïŒ30åïŒ: Phase 2 - éæšå¥šãšã€ãªã¢ã¹åé€
- èšèšæ€èšïŒ1-2é±éïŒ: Phase 3-5 - çµ±å倿°èšèš
- å®è£ ïŒ3-5æ¥ïŒ: Phase 3-5 - çµ±å倿°å®è£
- TOMLå®è£ ïŒ1-2æ¥ïŒ: Phase 6 - nyash.tomlå
æçµç®æš: 25å â 5åïŒå ¬éïŒ + 4åïŒå éšïŒ = 80%åæžéæ