cue
starlark-rust
Our great sponsors
cue | starlark-rust | |
---|---|---|
108 | 9 | |
4,737 | 615 | |
2.0% | 5.7% | |
9.7 | 9.8 | |
1 day ago | 7 days ago | |
Go | Rust | |
Apache License 2.0 | Apache License 2.0 |
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.
cue
-
Show HN: Workout Tracker – self-hosted, single binary web application
Where `kube.cue` sets reasonable defaults (e.g. image is /). The "cluster" runs on a mini PC in my basement, and I have a small Digital Ocean VM with a static IP acting as an ingress (networking via Tailscale). Backups to cloud storage with restic, alerting/monitoring with Prometheus/Grafana, Caddy/Tailscale for local ingress.
-
Apple releases Pkl – onfiguration as code language
I've been somewhat surprised that CUE bills itself as "tooling friendly" and doesn't yet have a language server- the number one bit of tooling most devs use for a particular language.
I'm assuming it's becaus CUE is still unstable?
Anyway, if others are interested in CUE's LSP work, I think https://github.com/cue-lang/cue/issues/142 is the issue to subscribe to
-
Why the fuck are we templating YAML? (2019)
This is where I usually pitch in with "Have your heard of CUELang, our lord and savior?": https://cuelang.org/
- Not turing complete
-
10 Ways for Kubernetes Declarative Configuration Management
CUE: The core problem CUE solves is "type checking", which is mainly used in configuration constraint verification scenarios and simple cloud native configuration scenarios.
-
Lua is a viable alternative for JSON
If you really want executable configurations please consider a newer language like https://dascript.org or https://cuelang.org which provide better type safety.
-
Writerside – a new technical writing environment from JetBrains
Markdown and XML are nice, but what about more advanced documentation formats like OpenAPI? For one recent project, I set up automatic generation of the OpenAPI docs from (much more compact and flexible) CUE definitions (https://cuelang.org/) - which has the bonus of also being able to test the API against the definitions. JetBrains has a CUE plugin, but it's really barebones (doesn't even support jumping from the usage of a schema to its definition). Of course the possibilities when generating docs are endless (just think of the various syntaxes for doc comments, embedding examples/tests in source code etc.)...
-
Show HN: Config-file-validator – CLI tool to validate all your config files
It doesn't include validators for TOML and INI, but if you're doing JSON and YAML, I would take a look at using or building upon CUE (https://cuelang.org/). It is a different take on schema definition (plus more), and is surprising terse and powerful model.
- That's a Lot of YAML
- An INI Critique of TOML
- What Is Wrong with TOML?
starlark-rust
-
What config format do you prefer?
I haven't seen anyone mention starlark yet. It's something I want to play with as a config language.
-
loxcraft: a compiler, language server, and online playground for the Lox programming language
Aside from these, if you want some inspiration for a production-grade language built in Rust, you might want to go through the source code of Starlark and Gluon.
-
Launch HN: Moonrepo (YC W23) – Open-source build system
There is also a Rust implementation of Starlark as a starting point https://github.com/facebookexperimental/starlark-rust
To add to everyone else, please don't use YAML. Starlark is great _precisely_ because it is a readable, well known (nearly Python) language that is limited at the same time (no unbounded for loops, no way to do non-deterministic things like get the current time or `random()`).
-
Benchmarking Starlark against other embedded scripting languages
This is a follow-up to Benchmarking mlua/rlua/rhai - Rust embedded scripting languages from 4mo ago; I just added the new Starlark implementation from Meta to the benchmark posted by @aleksru.
-
The Perfect Configuration Format? Try TypeScript
The Rust implementation has it as an experimental extension (https://github.com/facebookexperimental/starlark-rust/blob/m...)
-
Making an interpreter for variable length byte-code, any way to use enums for this and not just a big u8?
u/ndmitchell has been working on a Starlark interpreter. He wrote up a blog post with some thoughts about different interpreter styles. He found that in his case using fixed sized instructions was about the same as byte-encoded ones, but compiling the AST to closures was also about the same performance as well, and doesn't need an AST->bytecode compiler.
-
Can i use rust to write my compiler??
As mentioned in other comments, type system features like algebraic data types (that Rust has) are really helpful. If you want a small-but-real example of a compiler in Rust (with an optimizer etc) then the starlark-rust compiler is good.
-
Zellij – A Terminal Workspace and Multiplexer Written in Rust
If your Rust program needs a more complicated configuration (conditionals, access to APIs and so on), also look at Facebook's Starlark parser and tooling[1]. Starlark is a subset of Python used by Bazel, Buck and a few other projects.
-
New version of Rust Starlark, an implementation of a deterministic Python-like language
The Facebook post gives a nice overview. It also links out to the home page for the project at https://github.com/facebookexperimental/starlark-rust/, which has an introduction and links to what Starlark is, the crates.io link, the docs.rs link etc.
What are some alternatives?
dhall-lang - Maintainable configuration files
cue - CUE has moved to https://github.com/cue-lang/cue
jsonnet - Jsonnet - The data templating language
.tmux - 🇫🇷 Oh my tmux! My self-contained, pretty & versatile tmux configuration made with ❤️
terraform - Terraform enables you to safely and predictably create, change, and improve infrastructure. It is a source-available tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned.
wasmtime - A fast and secure runtime for WebAssembly
Protobuf - Protocol Buffers - Google's data interchange format
zellij - A terminal workspace with batteries included
jsonnet-libs - Grafana Labs' Jsonnet libraries
inkwell - It's a New Kind of Wrapper for Exposing LLVM (Safely)
starlark-go - Starlark in Go: the Starlark configuration language, implemented in Go
Tmuxinator - Manage complex tmux sessions easily