freelang-v4 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +548 -0
- package/dist/ast.d.ts +367 -0
- package/dist/ast.js +4 -0
- package/dist/ast.js.map +1 -0
- package/dist/async-basic.test.d.ts +1 -0
- package/dist/async-basic.test.js +88 -0
- package/dist/async-basic.test.js.map +1 -0
- package/dist/async-jest.test.d.ts +1 -0
- package/dist/async-jest.test.js +99 -0
- package/dist/async-jest.test.js.map +1 -0
- package/dist/channel-jest.test.d.ts +1 -0
- package/dist/channel-jest.test.js +148 -0
- package/dist/channel-jest.test.js.map +1 -0
- package/dist/checker-jest.test.d.ts +1 -0
- package/dist/checker-jest.test.js +160 -0
- package/dist/checker-jest.test.js.map +1 -0
- package/dist/checker.d.ts +149 -0
- package/dist/checker.js +1565 -0
- package/dist/checker.js.map +1 -0
- package/dist/checker.test.d.ts +1 -0
- package/dist/checker.test.js +217 -0
- package/dist/checker.test.js.map +1 -0
- package/dist/compiler-jest.test.d.ts +1 -0
- package/dist/compiler-jest.test.js +233 -0
- package/dist/compiler-jest.test.js.map +1 -0
- package/dist/compiler.d.ts +127 -0
- package/dist/compiler.js +1588 -0
- package/dist/compiler.js.map +1 -0
- package/dist/compiler.test.d.ts +1 -0
- package/dist/compiler.test.js +313 -0
- package/dist/compiler.test.js.map +1 -0
- package/dist/db-100m-full.d.ts +5 -0
- package/dist/db-100m-full.js +78 -0
- package/dist/db-100m-full.js.map +1 -0
- package/dist/db-100m-no-index.d.ts +12 -0
- package/dist/db-100m-no-index.js +119 -0
- package/dist/db-100m-no-index.js.map +1 -0
- package/dist/db-100m-real.d.ts +5 -0
- package/dist/db-100m-real.js +131 -0
- package/dist/db-100m-real.js.map +1 -0
- package/dist/db-100m-streaming.d.ts +15 -0
- package/dist/db-100m-streaming.js +164 -0
- package/dist/db-100m-streaming.js.map +1 -0
- package/dist/db-100m-test.d.ts +5 -0
- package/dist/db-100m-test.js +111 -0
- package/dist/db-100m-test.js.map +1 -0
- package/dist/db-jest.test.d.ts +1 -0
- package/dist/db-jest.test.js +182 -0
- package/dist/db-jest.test.js.map +1 -0
- package/dist/db-runtime.d.ts +24 -0
- package/dist/db-runtime.js +204 -0
- package/dist/db-runtime.js.map +1 -0
- package/dist/db.d.ts +249 -0
- package/dist/db.js +593 -0
- package/dist/db.js.map +1 -0
- package/dist/file-io-jest.test.d.ts +1 -0
- package/dist/file-io-jest.test.js +225 -0
- package/dist/file-io-jest.test.js.map +1 -0
- package/dist/for-of-jest.test.d.ts +1 -0
- package/dist/for-of-jest.test.js +230 -0
- package/dist/for-of-jest.test.js.map +1 -0
- package/dist/for-of.test.d.ts +1 -0
- package/dist/for-of.test.js +305 -0
- package/dist/for-of.test.js.map +1 -0
- package/dist/function-literal-jest.test.d.ts +1 -0
- package/dist/function-literal-jest.test.js +180 -0
- package/dist/function-literal-jest.test.js.map +1 -0
- package/dist/function-literal.test.d.ts +1 -0
- package/dist/function-literal.test.js +245 -0
- package/dist/function-literal.test.js.map +1 -0
- package/dist/generics-jest.test.d.ts +1 -0
- package/dist/generics-jest.test.js +93 -0
- package/dist/generics-jest.test.js.map +1 -0
- package/dist/ir-gen.d.ts +15 -0
- package/dist/ir-gen.js +400 -0
- package/dist/ir-gen.js.map +1 -0
- package/dist/ir.d.ts +114 -0
- package/dist/ir.js +5 -0
- package/dist/ir.js.map +1 -0
- package/dist/lexer.d.ts +110 -0
- package/dist/lexer.js +467 -0
- package/dist/lexer.js.map +1 -0
- package/dist/lexer.test.d.ts +1 -0
- package/dist/lexer.test.js +426 -0
- package/dist/lexer.test.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.js +241 -0
- package/dist/main.js.map +1 -0
- package/dist/module-jest.test.d.ts +1 -0
- package/dist/module-jest.test.js +123 -0
- package/dist/module-jest.test.js.map +1 -0
- package/dist/parser.d.ts +56 -0
- package/dist/parser.js +1060 -0
- package/dist/parser.js.map +1 -0
- package/dist/parser.test.d.ts +1 -0
- package/dist/parser.test.js +461 -0
- package/dist/parser.test.js.map +1 -0
- package/dist/pattern-matching-jest.test.d.ts +1 -0
- package/dist/pattern-matching-jest.test.js +158 -0
- package/dist/pattern-matching-jest.test.js.map +1 -0
- package/dist/pkg/init.d.ts +1 -0
- package/dist/pkg/init.js +118 -0
- package/dist/pkg/init.js.map +1 -0
- package/dist/pkg/install.d.ts +1 -0
- package/dist/pkg/install.js +77 -0
- package/dist/pkg/install.js.map +1 -0
- package/dist/pkg/registry.d.ts +23 -0
- package/dist/pkg/registry.js +106 -0
- package/dist/pkg/registry.js.map +1 -0
- package/dist/pkg/run.d.ts +1 -0
- package/dist/pkg/run.js +76 -0
- package/dist/pkg/run.js.map +1 -0
- package/dist/pkg/toml.d.ts +5 -0
- package/dist/pkg/toml.js +117 -0
- package/dist/pkg/toml.js.map +1 -0
- package/dist/repl.d.ts +15 -0
- package/dist/repl.js +197 -0
- package/dist/repl.js.map +1 -0
- package/dist/runtime/bytecode.d.ts +92 -0
- package/dist/runtime/bytecode.js +253 -0
- package/dist/runtime/bytecode.js.map +1 -0
- package/dist/runtime/value.d.ts +102 -0
- package/dist/runtime/value.js +302 -0
- package/dist/runtime/value.js.map +1 -0
- package/dist/runtime/vm.d.ts +65 -0
- package/dist/runtime/vm.js +293 -0
- package/dist/runtime/vm.js.map +1 -0
- package/dist/struct-instance-jest.test.d.ts +1 -0
- package/dist/struct-instance-jest.test.js +209 -0
- package/dist/struct-instance-jest.test.js.map +1 -0
- package/dist/struct-instance.test.d.ts +1 -0
- package/dist/struct-instance.test.js +291 -0
- package/dist/struct-instance.test.js.map +1 -0
- package/dist/struct-jest.test.d.ts +1 -0
- package/dist/struct-jest.test.js +176 -0
- package/dist/struct-jest.test.js.map +1 -0
- package/dist/struct.test.d.ts +1 -0
- package/dist/struct.test.js +231 -0
- package/dist/struct.test.js.map +1 -0
- package/dist/trait-jest.test.d.ts +1 -0
- package/dist/trait-jest.test.js +120 -0
- package/dist/trait-jest.test.js.map +1 -0
- package/dist/vm-jest.test.d.ts +1 -0
- package/dist/vm-jest.test.js +569 -0
- package/dist/vm-jest.test.js.map +1 -0
- package/dist/vm.d.ts +81 -0
- package/dist/vm.js +1956 -0
- package/dist/vm.js.map +1 -0
- package/dist/vm.test.d.ts +1 -0
- package/dist/vm.test.js +337 -0
- package/dist/vm.test.js.map +1 -0
- package/dist/web-repl/sandbox.d.ts +11 -0
- package/dist/web-repl/sandbox.js +76 -0
- package/dist/web-repl/sandbox.js.map +1 -0
- package/dist/web-repl/server.d.ts +1 -0
- package/dist/web-repl/server.js +111 -0
- package/dist/web-repl/server.js.map +1 -0
- package/dist/while-loop-jest.test.d.ts +1 -0
- package/dist/while-loop-jest.test.js +201 -0
- package/dist/while-loop-jest.test.js.map +1 -0
- package/dist/while-loop.test.d.ts +1 -0
- package/dist/while-loop.test.js +262 -0
- package/dist/while-loop.test.js.map +1 -0
- package/docs/EXPERIENCE.md +787 -0
- package/docs/README.md +175 -0
- package/docs/V1_V2_V3_ANALYSIS.md +107 -0
- package/docs/_config.yml +36 -0
- package/docs/api-reference.md +459 -0
- package/docs/architecture.md +470 -0
- package/docs/benchmarks.md +295 -0
- package/docs/comparison.md +454 -0
- package/docs/index.md +335 -0
- package/docs/language-completeness.md +228 -0
- package/docs/learning-guide.md +651 -0
- package/package.json +65 -0
- package/src/api/deploy_key.fl +294 -0
- package/src/api/issue.fl +302 -0
- package/src/api/org.fl +356 -0
- package/src/api/repo.fl +394 -0
- package/src/api/team.fl +299 -0
- package/src/api/user.fl +385 -0
- package/src/api/webhook.fl +273 -0
- package/src/ast.ts +158 -0
- package/src/async-basic.test.ts +94 -0
- package/src/async-jest.test.ts +107 -0
- package/src/channel-jest.test.ts +158 -0
- package/src/checker-jest.test.ts +189 -0
- package/src/checker.test.ts +279 -0
- package/src/checker.ts +1861 -0
- package/src/commands/analyze.fl +227 -0
- package/src/commands/auth.fl +315 -0
- package/src/commands/batch.fl +349 -0
- package/src/commands/config.fl +199 -0
- package/src/commands/deploy_key.fl +352 -0
- package/src/commands/issue.fl +275 -0
- package/src/commands/main.fl +492 -0
- package/src/commands/org.fl +425 -0
- package/src/commands/repo.fl +581 -0
- package/src/commands/team.fl +244 -0
- package/src/commands/user.fl +423 -0
- package/src/commands/webhook.fl +400 -0
- package/src/compiler-jest.test.ts +275 -0
- package/src/compiler.test.ts +375 -0
- package/src/compiler.ts +1770 -0
- package/src/config.fl +175 -0
- package/src/core/batch.fl +355 -0
- package/src/core/cache.fl +284 -0
- package/src/core/ensure.fl +324 -0
- package/src/db-100m-full.ts +96 -0
- package/src/db-100m-no-index.ts +133 -0
- package/src/db-100m-real.ts +152 -0
- package/src/db-100m-streaming.ts +154 -0
- package/src/db-100m-test.ts +136 -0
- package/src/db-jest.test.ts +161 -0
- package/src/db-runtime.ts +242 -0
- package/src/db.ts +676 -0
- package/src/errors.fl +134 -0
- package/src/for-of-jest.test.ts +246 -0
- package/src/for-of.test.ts +308 -0
- package/src/function-literal-jest.test.ts +193 -0
- package/src/function-literal.test.ts +248 -0
- package/src/generics-jest.test.ts +104 -0
- package/src/http/client.fl +327 -0
- package/src/ir-gen.ts +459 -0
- package/src/ir.ts +80 -0
- package/src/lexer.test.ts +499 -0
- package/src/lexer.ts +522 -0
- package/src/main.ts +223 -0
- package/src/models.fl +162 -0
- package/src/module-jest.test.ts +145 -0
- package/src/parser.test.ts +542 -0
- package/src/parser.ts +1211 -0
- package/src/pattern-matching-jest.test.ts +170 -0
- package/src/pkg/init.ts +91 -0
- package/src/pkg/install.ts +56 -0
- package/src/pkg/registry.ts +103 -0
- package/src/pkg/run.ts +49 -0
- package/src/pkg/toml.ts +129 -0
- package/src/repl.ts +190 -0
- package/src/runtime/bytecode.ts +291 -0
- package/src/runtime/value.ts +322 -0
- package/src/runtime/vm.ts +354 -0
- package/src/self-host/bootstrap.fl +68 -0
- package/src/self-host/interpreter.fl +361 -0
- package/src/self-host/lexer-simple.fl +22 -0
- package/src/self-host/lexer.fl +305 -0
- package/src/self-host/parser.fl +580 -0
- package/src/struct-instance-jest.test.ts +221 -0
- package/src/struct-instance.test.ts +293 -0
- package/src/struct-jest.test.ts +187 -0
- package/src/struct.test.ts +234 -0
- package/src/trait-jest.test.ts +136 -0
- package/src/vm-jest.test.ts +754 -0
- package/src/vm.ts +1976 -0
- package/src/web-repl/public/index.html +50 -0
- package/src/web-repl/public/main.js +105 -0
- package/src/web-repl/public/style.css +225 -0
- package/src/web-repl/sandbox.ts +88 -0
- package/src/web-repl/server.ts +97 -0
- package/src/while-loop-jest.test.ts +218 -0
- package/src/while-loop.test.ts +267 -0
package/docs/README.md
ADDED
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# ๐ FreeLang v4
|
|
2
|
+
|
|
3
|
+
**AI-First ํ๋ก๊ทธ๋๋ฐ ์ธ์ด**
|
|
4
|
+
|
|
5
|
+
> ์์ ํ ๊ตฌํ + ์ฑ๋ฅ ์ค์ฌ + ํ์ฅ์ฑ ๋์
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## ๐ฏ ์๊ฐ
|
|
10
|
+
|
|
11
|
+
FreeLang v4๋ **์ ์ ํ์
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด**๋ก์ ๋ค์์ ์ ๊ณตํฉ๋๋ค:
|
|
12
|
+
|
|
13
|
+
- โ
**์์ ํ ๊ตฌํ**: Lexer โ Parser โ Compiler โ VM
|
|
14
|
+
- โ
**AI-First ์ค๊ณ**: LLM ํตํฉ ๊ธฐ๋ฐ ์ธ์ด
|
|
15
|
+
- โ
**์ฑ๋ฅ ์ค์ฌ**: ๋ณ๋ ฌ ์ฒ๋ฆฌ, ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ
|
|
16
|
+
- โ
**ํ๋ก๋์
์ค๋น**: 82.6% ์์ฑ๋, 95.4% ํ
์คํธ ํต๊ณผ
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## ๐ ๋ฌธ์
|
|
21
|
+
|
|
22
|
+
| ๋ฌธ์ | ์ค๋ช
|
|
|
23
|
+
|------|------|
|
|
24
|
+
| ๐ [**ํ์ต ๊ฐ์ด๋**](learning-guide.md) | 10๋จ๊ณ ์ปค๋ฆฌํ๋ผ (์ด๊ธโ๊ณ ๊ธ) |
|
|
25
|
+
| ๐ [**API ๋ ํผ๋ฐ์ค**](api-reference.md) | 42๊ฐ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์ |
|
|
26
|
+
| ๐ [**์ธ์ด ๋น๊ต**](comparison.md) | Python, JavaScript, Go, Rust์ ๋น๊ต |
|
|
27
|
+
| ๐ [**์์ฑ๋ ํ๊ฐ**](language-completeness.md) | 82.6% ์ข
ํฉ ํ๊ฐ |
|
|
28
|
+
| ๐ [**์ฑ๋ฅ ๋ฒค์น๋งํฌ**](benchmarks.md) | 4,420 ops ์ธก์ ๊ฒฐ๊ณผ |
|
|
29
|
+
| ๐๏ธ [**์ํคํ
์ฒ**](architecture.md) | ์์คํ
์ค๊ณ ๋ฐ ๊ตฌํ |
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## ๐ ๋น ๋ฅธ ์์
|
|
34
|
+
|
|
35
|
+
### ์ค์น
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
git clone https://github.com/kimjindol2025/freelang-langv4.git
|
|
39
|
+
cd freelang-langv4
|
|
40
|
+
npm install && npm run build
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### ์ฒซ ๋ฒ์งธ ํ๋ก๊ทธ๋จ
|
|
44
|
+
|
|
45
|
+
```freelang
|
|
46
|
+
let message = "Hello, FreeLang!"
|
|
47
|
+
println(message)
|
|
48
|
+
|
|
49
|
+
let numbers = [1, 2, 3, 4, 5]
|
|
50
|
+
for x in numbers {
|
|
51
|
+
println(str(x * x))
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### ์คํ
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
node dist/vm.js hello.fl
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## ๐ก ์ฃผ์ ํน์ง
|
|
64
|
+
|
|
65
|
+
### 1. ์ ์ ํ์
์์คํ
|
|
66
|
+
```freelang
|
|
67
|
+
let name: str = "Alice"
|
|
68
|
+
let age: i32 = 30
|
|
69
|
+
let scores: [i32] = [85, 90, 95]
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### 2. ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
|
|
73
|
+
```freelang
|
|
74
|
+
let doubled = numbers.fold([], fn(acc, x) -> {
|
|
75
|
+
acc.push(x * 2)
|
|
76
|
+
acc
|
|
77
|
+
})
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 3. ์๋ฌ ์ฒ๋ฆฌ
|
|
81
|
+
```freelang
|
|
82
|
+
match parse_int("42") {
|
|
83
|
+
case Ok(num) -> println(str(num)),
|
|
84
|
+
case Err(e) -> println(e)
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 4. ๋ณ๋ ฌ ์ฒ๋ฆฌ & ๋ถ์ฐ ์์คํ
|
|
89
|
+
```freelang
|
|
90
|
+
let pool = worker_pool_new(4)
|
|
91
|
+
worker_pool_process(pool, task)
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## ๐ ์ฑ๋ฅ ๋ฒค์น๋งํฌ
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
๋ฌธ์์ด ์ฒ๋ฆฌ: 2,200 ops โก
|
|
100
|
+
์ปฌ๋ ์
: 700 ops โก
|
|
101
|
+
์ํ ์ฐ์ฐ: 300 ops โกโกโก
|
|
102
|
+
ํจ์ ํธ์ถ: 20 ops โ
|
|
103
|
+
์๋ฌ ์ฒ๋ฆฌ: 300 ops โ
|
|
104
|
+
๊ตฌ์กฐ์ฒด: 300 ops โ
|
|
105
|
+
์บ์ ์ฐ์ฐ: 300 ops โจ (์ ๊ท)
|
|
106
|
+
๋ฉ๋ชจ๋ฆฌ ํ ๋น: 300 ops โจ (์ ๊ท)
|
|
107
|
+
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
108
|
+
ํฉ๊ณ: 4,420 ops (15.7% ๊ฐ์ )
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## ๐ ํ์ต ๊ฒฝ๋ก
|
|
114
|
+
|
|
115
|
+
| ๋จ๊ณ | ์ฃผ์ | ์๊ฐ |
|
|
116
|
+
|------|------|------|
|
|
117
|
+
| 1-4 | **์ด๊ธ** (๋ณ์, ํจ์, ๋ฐฐ์ด, ์๋ฌ) | 8h |
|
|
118
|
+
| 5-7 | **์ค๊ธ** (ํจ์ํ, ๋ชจ๋, ๋ฉ๋ชจ๋ฆฌ) | 6h |
|
|
119
|
+
| 8-10 | **๊ณ ๊ธ** (๋ณ๋ ฌ, ๋ถ์ฐ, ํ๋ก์ ํธ) | 6h |
|
|
120
|
+
|
|
121
|
+
๐ [**10๋จ๊ณ ํ์ต ๊ฐ์ด๋ ์์ํ๊ธฐ**](learning-guide.md)
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## ๐ง ๊ธฐ์ ์คํ
|
|
126
|
+
|
|
127
|
+
- **์ธ์ด**: FreeLang v4
|
|
128
|
+
- **์ปดํ์ผ๋ฌ**: TypeScript (src/)
|
|
129
|
+
- **๋ฐํ์**: Node.js VM
|
|
130
|
+
- **ํ
์คํธ**: Jest (95.4% ํต๊ณผ)
|
|
131
|
+
- **๋ฐฐํฌ**: GitHub Pages + Gogs
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## ๐ ํ๋ก์ ํธ ์ํ
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
Phase 1-3: โ
์๋ฃ ๊ธฐ์ด ๊ตฌํ
|
|
139
|
+
Phase 4-6: โ
์๋ฃ ์ฑ๋ฅ & ๋ถ์ฐ
|
|
140
|
+
Phase 7+: ๐ ์งํ์ค ๊ณ ๊ธ ๊ธฐ๋ฅ
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
| ๋ฉํธ๋ฆญ | ์์น |
|
|
144
|
+
|--------|------|
|
|
145
|
+
| **์์ฑ๋** | 82.6% |
|
|
146
|
+
| **ํ
์คํธ** | 251/263 (95.4%) |
|
|
147
|
+
| **์ฝ๋ ๋ผ์ธ** | 4,958์ค |
|
|
148
|
+
| **ํ์ค ํจ์** | 42๊ฐ |
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## ๐ ๋งํฌ
|
|
153
|
+
|
|
154
|
+
- ๐ **GitHub**: https://github.com/kimjindol2025/freelang-langv4
|
|
155
|
+
- ๐ฆ **Gogs**: https://gogs.dclub.kr/kim/freelang-v4
|
|
156
|
+
- ๐ **๋ฌธ์**: ์ด ํ์ด์ง์ ๋ฌธ์ ์น์
์ฐธ๊ณ
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## ๐ฌ ํผ๋๋ฐฑ & ๊ธฐ์ฌ
|
|
161
|
+
|
|
162
|
+
- ๐ [๋ฒ๊ทธ ๋ฆฌํฌํธ](https://github.com/kimjindol2025/freelang-langv4/issues)
|
|
163
|
+
- ๐ก [๊ธฐ๋ฅ ์ ์](https://github.com/kimjindol2025/freelang-langv4/discussions)
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## ๐ ๋ผ์ด์ ์ค
|
|
168
|
+
|
|
169
|
+
MIT License - ์์ ๋กญ๊ฒ ์ฌ์ฉํ์ธ์!
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
**Happy Coding! ๐**
|
|
174
|
+
|
|
175
|
+
Last Updated: 2026-04-05
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# FreeLang v1/v2/v3 ์คํจ ๋ถ์ โ v4 ๊ตํ
|
|
2
|
+
|
|
3
|
+
## ์์น ๋น๊ต
|
|
4
|
+
|
|
5
|
+
| ํญ๋ชฉ | v1 | v2 | v3 | v4 |
|
|
6
|
+
|------|-----|-----|-----|-----|
|
|
7
|
+
| ์์ค ํ์ผ | 304 | 344 | 94 | 11 |
|
|
8
|
+
| ์์ค LOC | 109,515 | 115,628 | 34,905 | 5,764 |
|
|
9
|
+
| ์ปค๋ฐ | 406 | 402 | 73 | 21 |
|
|
10
|
+
| Phase | 25 | 24 | 9 | 6 |
|
|
11
|
+
| ํด๋ (src/) | 32 | 55 | 1 (flat) | 1 |
|
|
12
|
+
| ํ
์คํธ ๊ฒฐ๊ณผ | 140 ์คํจ | OOM Killed | 9 ํต๊ณผ | **0 ์คํจ (334)** |
|
|
13
|
+
| ํ์ ๊ฐ์ | 1 (split) | 6 | 1 | 1 (699์ค) |
|
|
14
|
+
| ๋์คํฌ | 317 MB | ~300 MB | ~5 MB | ~1 MB |
|
|
15
|
+
|
|
16
|
+
## v1 ์คํจ ์์ธ
|
|
17
|
+
|
|
18
|
+
### 1. ์ปดํ์ผ๋ฌ๊ฐ 5๊ฐ (์ด๋ ๊ฒ๋ ๋ฏธ์์ฑ)
|
|
19
|
+
- `src/compiler/` โ SimpleParser + CGenerator (ํ ์ด ์์ค)
|
|
20
|
+
- `src/parser/` โ 2,132์ค (๋ณ๋)
|
|
21
|
+
- `src/vm/` โ compiler.ts + vm.ts (๋ณ๋)
|
|
22
|
+
- `src/interpreter/` โ 2,887์ค (๋ณ๋)
|
|
23
|
+
- `src/codegen/` โ LLVM, C, multi-backend (๋ณ๋)
|
|
24
|
+
|
|
25
|
+
ํ์ดํ๋ผ์ธ์ด ์ฐ๊ฒฐ ์ ๋จ. ๊ฐ๊ฐ ๋
๋ฆฝ์ ์ผ๋ก ์กด์ฌ.
|
|
26
|
+
|
|
27
|
+
### 2. ํ ํฌ๋์ด์ ๊ฐ ์ ๊ท์ split
|
|
28
|
+
```typescript
|
|
29
|
+
// v1: ๊ณต๋ฐฑ ํฌํจ ๋ฌธ์์ด ๊นจ์ง, 2๊ธ์ ์ฐ์ฐ์ ๋ฏธ์ฒ๋ฆฌ
|
|
30
|
+
const parts = trimmed.replace(/([(){}\[\];:,])/g, ' $1 ').split(/\s+/);
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### 3. stdlib 159๊ฐ ํ์ผ์ด ์ ๋ถ TypeScript ๋ํผ
|
|
34
|
+
```typescript
|
|
35
|
+
// FreeLang ์ฝ๋์์ ํธ์ถ ๊ฒฝ๋ก ์์
|
|
36
|
+
static abs(x: number): number { return globalThis.Math.abs(x); }
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### 4. Phase 10์์ v1.0.0 ์ ์ธ ํ Phase 25๊น์ง ๋ฌดํ ํ์ฅ
|
|
40
|
+
Swagger, ORM, MongoDB, gRPC, WebSocket, CI/CD... ๋ง์ง๋ง ์ปค๋ฐ์ด Phase 25 Revert.
|
|
41
|
+
|
|
42
|
+
### 5. ํ
์คํธ 10.5% ์คํจ (140/1,338), 6๋ถ 40์ด ์์
|
|
43
|
+
|
|
44
|
+
## v2 ์คํจ ์์ธ
|
|
45
|
+
|
|
46
|
+
### 1. v1๋ณด๋ค ํด๋ ๋ ๋์ด๋จ (32 โ 55)
|
|
47
|
+
`type-checker/`, `type-system/`, `types/` 3๊ฐ ๊ณต์กด. `analyzer/`์ 38๊ฐ ํ์ผ.
|
|
48
|
+
|
|
49
|
+
### 2. ํ์ 6๊ฐ (์ ๋๋ฉด ์๋ก ๋ง๋ค๊ธฐ ๋ฐ๋ณต)
|
|
50
|
+
```
|
|
51
|
+
parser.ts 1,397์ค
|
|
52
|
+
one-pass-parser.ts 819์ค
|
|
53
|
+
partial-parser.ts 675์ค
|
|
54
|
+
block-parser.ts 459์ค
|
|
55
|
+
async-parser.ts 359์ค
|
|
56
|
+
expression-completer 613์ค
|
|
57
|
+
ํฉ๊ณ: 5,279์ค
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 3. Phase ํด๋๊ฐ src/ ์์ 16๊ฐ ํผ์ฌ
|
|
61
|
+
```
|
|
62
|
+
src/phase-6/ src/phase-8/ src/phase-9/ src/phase-10/ (2.5MB!)
|
|
63
|
+
src/phase-11/ ~ src/phase-24/
|
|
64
|
+
```
|
|
65
|
+
์์
๋จ์์ ์ฝ๋ ๊ตฌ์กฐ ๊ตฌ๋ถ ๋ถ๊ฐ.
|
|
66
|
+
|
|
67
|
+
### 4. ํ
์คํธ OOM Killed (82,386์ค ํ
์คํธ๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๋ก ๋๊น์ง ๋ชป ๋์๊ฐ)
|
|
68
|
+
|
|
69
|
+
## v3 ์คํจ ์์ธ
|
|
70
|
+
|
|
71
|
+
### 1. ๊ท๋ชจ๋ ์ค์์ง๋ง (34,905 LOC) 73์ปค๋ฐ์ Phase 9๊น์ง ํ์ฅ
|
|
72
|
+
### 2. CSI (Claude Self-Interrogation) ๋ฑ ์ธ์ด ์ธ ๊ธฐ๋ฅ์ ์ง์ค
|
|
73
|
+
### 3. "v3.0.0 Release Ready" ์ ์ธ ํ์๋ ๊ณ์ ๊ธฐ๋ฅ ์ถ๊ฐ
|
|
74
|
+
### 4. ํ
์คํธ 9๊ฐ๋ฟ (์ปค๋ฒ๋ฆฌ์ง ๋ถ์กฑ)
|
|
75
|
+
|
|
76
|
+
## v4๊ฐ ๋ค๋ฅด๊ฒ ํ ๊ฒ
|
|
77
|
+
|
|
78
|
+
| ๋ฌธ์ | v1/v2/v3 | v4 |
|
|
79
|
+
|------|---------|-----|
|
|
80
|
+
| ์ค๊ณ | ์ฝ๋๋ถํฐ ์นจ | **์ค๊ณ 10 Step ๋จผ์ ** |
|
|
81
|
+
| ํ์ดํ๋ผ์ธ | ๋ถ๋ฆฌ/์ค๋ณต | **1๊ฐ ์ฐ๊ฒฐ (LexerโParserโCheckerโCompilerโVM)** |
|
|
82
|
+
| ๋ฒ์ | Phase ๋ฌดํ ํ์ฅ | **6 Phase๋ก ๋** |
|
|
83
|
+
| ํ์ | ์ฌ๋ฌ ๊ฐ (์ ๋๋ฉด ์๋ก) | **1๊ฐ (RD+Pratt, 699์ค)** |
|
|
84
|
+
| ํด๋ | 32~55๊ฐ | **src/ 1๊ฐ (11ํ์ผ)** |
|
|
85
|
+
| ํ
์คํธ | ์คํจ/OOM/๋ถ์กฑ | **334๊ฐ 0 ์คํจ** |
|
|
86
|
+
| ์์ฑ | ๋ฏธ์์ฑ | **E2E ์คํ (factorial, fizzbuzz, fibonacci)** |
|
|
87
|
+
|
|
88
|
+
## ํต์ฌ ๊ตํ
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
v1: "๋ง๋ค๋ฉด์ ์ค๊ณํ์" โ ํ์ดํ๋ผ์ธ ๋ฏธ์ฐ๊ฒฐ
|
|
92
|
+
v2: "v1 ๊ตํ์ผ๋ก ๋ ์ ํ์" โ v1๋ณด๋ค ๋ ๋น๋ํด์ง
|
|
93
|
+
v3: "์ด๋ฒ์ ์๊ฒ ํ์" โ ๊ทธ๋๋ Phase 9๊น์ง ํ์ฅ
|
|
94
|
+
v4: "์ค๊ณ ๋จผ์ . 6 Phase. ๋." โ 5,764 LOC์ 334 tests 0 failures
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## v5 ์ฐธ๊ณ ์๋ฃ
|
|
98
|
+
|
|
99
|
+
- **AST Patterns**: https://gogs.dclub.kr/kim/ast-patterns.git
|
|
100
|
+
- 8๊ฐ์ง AST ๊ตฌํ ํจํด (Classic Tree, Tagged Union, Flat, Arena, Immutable, Green-Red Tree ๋ฑ)
|
|
101
|
+
- v4๋ #2 Tagged Union ์ฌ์ฉ ์ค
|
|
102
|
+
- v5 ์ฑ๋ฅ ์ต์ ํ ์ #4 Flat AST ๋๋ #5 Arena AST ๊ฒํ
|
|
103
|
+
- **Observability Daemon**: https://gogs.dclub.kr/kim/Observability-Daemon.git
|
|
104
|
+
- ์ฝ๋ ๋ถ์ ์ด์์คํดํธ (์๋ํฐ ์ฐ๋ CLI)
|
|
105
|
+
- ์ค์๊ฐ ์ํ๋ ๋ถ์ (๋ฉ๋ชจ๋ฆฌ, ์ฑ๋ฅ, ์๋ฌ ํธ๋ค๋ง)
|
|
106
|
+
- Vim/Emacs/Sublime/VSCode ํตํฉ, CI/CD ํ์ดํ๋ผ์ธ ์ง์
|
|
107
|
+
- v5 FreeLang ์ฝ๋ ๋ถ์ ๋๊ตฌ(linter/advisor) ๊ตฌํ ์ ์ฐธ๊ณ
|
package/docs/_config.yml
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# GitHub Pages ์ค์
|
|
2
|
+
title: FreeLang v4 - AI-First ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
|
|
3
|
+
description: ์์ ํ ๊ตฌํ, ์ฑ๋ฅ ์ค์ฌ, ํ์ฅ์ฑ ๋์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
|
|
4
|
+
author: Kim Jin Dol
|
|
5
|
+
email: contact@freelang.dev
|
|
6
|
+
|
|
7
|
+
# ํ
๋ง ์ค์
|
|
8
|
+
theme: jekyll-theme-minimal
|
|
9
|
+
|
|
10
|
+
# ๊ธฐ๋ณธ ์ค์
|
|
11
|
+
markdown: kramdown
|
|
12
|
+
highlighter: rouge
|
|
13
|
+
|
|
14
|
+
# ํ๋ฌ๊ทธ์ธ
|
|
15
|
+
plugins:
|
|
16
|
+
- jekyll-sitemap
|
|
17
|
+
- jekyll-seo-tag
|
|
18
|
+
- jekyll-feed
|
|
19
|
+
|
|
20
|
+
# SEO ์ค์
|
|
21
|
+
lang: ko-KR
|
|
22
|
+
locale: ko_KR
|
|
23
|
+
|
|
24
|
+
# ๋น๋ ์ค์
|
|
25
|
+
exclude:
|
|
26
|
+
- .gitignore
|
|
27
|
+
- README.md
|
|
28
|
+
- LICENSE
|
|
29
|
+
- node_modules
|
|
30
|
+
- EXPERIENCE.md
|
|
31
|
+
- V1_V2_V3_ANALYSIS.md
|
|
32
|
+
|
|
33
|
+
# ์ถ๋ ฅ ์ค์
|
|
34
|
+
output: web
|
|
35
|
+
future: false
|
|
36
|
+
show_downloads: true
|