perry
proof-is-in-the-pudding
| perry | proof-is-in-the-pudding | |
|---|---|---|
| 12 | 4 | |
| 3,610 | 7 | |
| 38.2% | - | |
| 9.9 | 8.4 | |
| 7 days ago | 24 days ago | |
| Rust | TypeScript | |
| MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
perry
-
Perry Compiles TypeScript directly to executables using SWC and LLVM
On other sites, like github and reddit. This exchange was funny though. He eventually gets called out by the other commenter to stop responding with an LLM: https://github.com/PerryTS/perry/issues/139#issuecomment-429...
- I am worried about Bun
- Perry compiles TypeScript to native GUI and CLI apps on 10 platforms
- Perry – TypeScript → Native
- PerryTS: Compile TypeScript to native executables with LLVM
-
Show HN: Pry – TypeScript compiled to native code, no Electron or V8
Hey HN — I've been building Perry, a compiler that takes TypeScript and emits native binaries. No V8, no runtime, no Electron. It maps to platform-native UI widgets: AppKit on macOS, UIKit on iOS, Android Views on Android, GTK4 on Linux, Win32 on Windows.
Pry is the first real app built with it — a JSON viewer, deliberately small.
It's in the iOS/macOS App Store and Google Play right now. Linux build works, Windows is waiting on code signing.
The compiler itself is written in Rust. It handles TypeScript parsing, type checking, and lowers to native code. The UI bindings aren't a wrapper library — the compiler generates the actual platform API calls.
This is a building-in-public thing. Pry is the proof-of-concept. The bigger goal is a full IDE. Happy to answer questions about the compiler architecture, the app store submission process, or anything else.
Compiler repo: https://github.com/PerryTS/perry
proof-is-in-the-pudding
-
Perry Compiles TypeScript directly to executables using SWC and LLVM
> strict, deterministic subset of TypeScript
I'll add that page, thanks. Today, almost all of idiomatic TS is supported including most of its utility classes. Dynamic JS-style code is not supported, for example adding a function or a field into an object, prototype-based class modifications etc. I'll compile a list.
> Also, what's an "ambient surface" in this context?
I need to clean up the docs before v1. But the idea is that when JS gets transpiled into C# (or Rust, upcoming), JS globals and built-ins are invalid. The native "surface" is C#, meaning the string is .Net's string type and the methods that you expect on JS strings would be missing. But when you opt in to a surface, such as the "JS surface", the compiler applies surface defined translations such as substring becoming SubString, either directly or via a companion helper class. This allows you to write against standard JS and Node APIs, instead of relying on the stdlib/builtins of the target framework (currently only CLR).
For example, all the projects you see under this use the JS surface: https://github.com/tsoniclang/proof-is-in-the-pudding/tree/m...
-
Show HN: Tsonic – A TypeScript to native code compiler via CLR and NativeAOT
You can see some examples here: https://github.com/tsoniclang/proof-is-in-the-pudding
And a hugo clone (native code of course) here: https://github.com/tsoniclang/tsumo
-
The Performance Revolution in JavaScript Tooling
Actually TypeScript is an excellent language (in my view) for targeting native code. It reads cleaner than Java, C# and even golang in many cases - at least to me.
For example, JS/TS's file-path based imports are more intuitive; several languages do it via explicit namespaces when well-written code is already organized into directories. Of course, all of these design choices are subjective. In fact, disagreement with a few people in the C# user community is one of the reasons I started this project.
> At what point do JavaScript developers need to realise that this is all convoluted, and begin to use languages better suited for the job.
I'm curious to know what makes TS convoluted. Here's an example of multi-threading: https://github.com/tsoniclang/proof-is-in-the-pudding/blob/m...
What are some alternatives?
rustc_codegen_cranelift - Cranelift based backend for rustc
tsonic - Compile TS to native code via NativeAOT
lumina - Lumina is an eager-by-default natively compiled functional programming language with the core goals of readibility, practicality, compiler-driven development and simplicity.
tsumo - A hugo-inspired blog engine
wasmtime - A lightweight WebAssembly runtime that is fast, secure, and standards-compliant
typescript-go - Staging repo for development of native port of TypeScript