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.
Files changed (2) hide show
  1. package/README.md +37 -27
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,11 +1,16 @@
1
1
  # GE
2
2
 
3
- **One typed source language. Native Rust, C++, C#, Zig, Go, or Kotlin — chosen per function.**
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
+ [![npm](https://img.shields.io/npm/v/gelang.svg)](https://www.npmjs.com/package/gelang)
6
+ [![CI](https://github.com/Zrald1/gelang/actions/workflows/ci.yml/badge.svg)](https://github.com/Zrald1/gelang/actions/workflows/ci.yml)
7
+ [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
8
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-blue.svg)](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 (or both in the same file), and GE emits native
7
- code for the backend that suits each function, then links it into a single
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
- **One file, many languages, compiled.** Other polyglot tools interpret each
75
- language at runtime. GE compiles: every flavour lowers to one typed IR, and
76
- every backend emits native code from it.
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`, `@go`,
81
- `@kotlin`.
82
-
83
- **Mixed backends link into one binary.** A Rust shell over C++ rendering
84
- compiles to a single executable — no shared library, no IPC, no FFI
85
- marshalling at runtime. `ge build` generates the `extern "C"` declarations
86
- on both sides from the call graph.
87
-
88
- **Small binaries.** A desktop app with a real window, audio capture, and
89
- HTTPS is ~15 MB. The same thing in Electron is 120–200 MB.
90
-
91
- **Two UI ecosystems from one DSL.** `.ge.ui` generates Flutter/Dart *or*
92
- React 19 + TypeScript + Vite. The generated files are yours to edit;
93
- regeneration never clobbers them without `--force`.
94
-
95
- **AI-friendly by construction.** GE's input syntax *is* Python and
96
- TypeScript, so existing model knowledge transfers directly. Named blocks
97
- give an assistant a bounded, nameable unit with an explicit call contract,
98
- and the compiler is the verifier that catches a hallucinated signature at
99
- build time.
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gelang",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "One typed source language, compiled to Rust, C++, C#, Zig, Go, or Kotlin — chosen per function. Generates Flutter and React UIs from one DSL.",
5
5
  "keywords": [
6
6
  "ge",