gelang 0.1.0 → 0.1.2
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 +37 -27
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
# GE
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**A typed, multi-target systems language. Write Python-like or TypeScript-like source, compile to native Rust, C++, C#, Zig, Go, or Kotlin — with the backend chosen per function.**
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/gelang)
|
|
6
|
+
[](https://github.com/Zrald1/gelang/actions/workflows/ci.yml)
|
|
7
|
+
[](LICENSE)
|
|
8
|
+
[](https://www.python.org/downloads/)
|
|
4
9
|
|
|
5
10
|
GE is a compiler. You write `.ge` files in Python-flavoured or
|
|
6
|
-
TypeScript-flavoured syntax
|
|
7
|
-
code for the backend that suits each function, then links
|
|
8
|
-
executable.
|
|
11
|
+
TypeScript-flavoured syntax — or both in the same file — and GE emits native
|
|
12
|
+
code for the backend that suits each function, then links everything into a
|
|
13
|
+
single executable.
|
|
9
14
|
|
|
10
15
|
```bash
|
|
11
16
|
npx gelang doctor # check what you have
|
|
@@ -71,32 +76,37 @@ $ ge build main.ge --run
|
|
|
71
76
|
|
|
72
77
|
## Why GE
|
|
73
78
|
|
|
74
|
-
**
|
|
75
|
-
|
|
76
|
-
|
|
79
|
+
**Compiled, not interpreted.** Other polyglot tools dispatch to language
|
|
80
|
+
runtimes. GE lowers every flavour to one typed IR and emits native code from
|
|
81
|
+
it, so the result is a single binary with no interpreter in the loop.
|
|
77
82
|
|
|
78
83
|
**The backend is chosen per function, not per project.** A hot arithmetic
|
|
79
84
|
loop and a UI renderer have different needs. GE scores each function and
|
|
80
|
-
picks, or you pin one with `@rust`, `@cpp`, `@csharp`, `@zig`,
|
|
81
|
-
`@kotlin`.
|
|
82
|
-
|
|
83
|
-
**Mixed backends link into one binary.** A Rust shell over C++
|
|
84
|
-
compiles to a single executable — no shared library, no IPC, no FFI
|
|
85
|
-
marshalling
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
**Small binaries.** A desktop
|
|
89
|
-
HTTPS is
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
85
|
+
picks, or you pin one explicitly with `@rust`, `@cpp`, `@csharp`, `@zig`,
|
|
86
|
+
`@go`, or `@kotlin`.
|
|
87
|
+
|
|
88
|
+
**Mixed backends link into one binary.** A Rust shell over a C++ renderer
|
|
89
|
+
compiles to a single executable — no shared library, no IPC, no runtime FFI
|
|
90
|
+
marshalling. `ge build` derives the `extern "C"` declarations on both sides
|
|
91
|
+
from the call graph.
|
|
92
|
+
|
|
93
|
+
**Small binaries.** A desktop application with a native window, audio
|
|
94
|
+
capture, and HTTPS is roughly 15 MB. The same application on Electron is
|
|
95
|
+
120–200 MB.
|
|
96
|
+
|
|
97
|
+
**Two UI ecosystems from one DSL.** `.ge.ui` generates either Flutter/Dart
|
|
98
|
+
or React 19 + TypeScript + Vite. Generated files are yours to edit;
|
|
99
|
+
regeneration never overwrites them unless you pass `--force`.
|
|
100
|
+
|
|
101
|
+
**Verifiable by design.** `ge diff` runs a program through CPython and every
|
|
102
|
+
installed backend, comparing output byte for byte. `ge golden` pins emitted
|
|
103
|
+
code so it cannot drift. `ge api-check` guards the CLI surface. All three run
|
|
104
|
+
in CI.
|
|
105
|
+
|
|
106
|
+
**Suited to AI-assisted development.** GE's input syntax is Python and
|
|
107
|
+
TypeScript, so existing model knowledge transfers directly. Named blocks give
|
|
108
|
+
an assistant a bounded unit with an explicit call contract, and the compiler
|
|
109
|
+
rejects an invalid signature at build time rather than at runtime.
|
|
100
110
|
|
|
101
111
|
---
|
|
102
112
|
|
package/package.json
CHANGED