tamago
s2protocol
tamago | s2protocol | |
---|---|---|
13 | 9 | |
1,278 | 616 | |
1.0% | 0.3% | |
8.3 | 5.7 | |
8 days ago | 12 days ago | |
Go | Python | |
BSD 3-clause "New" or "Revised" 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.
tamago
- Gokrazy – Go Appliances
-
OS in Go? Why Not
There's two major production-ready Go-based operating system(-ish) projects:
- Google's gVisor[1] (a re-implementation of a significant subset of the Linux syscall ABI for isolation, also mentioned in the article)
- USBArmory's Tamago[2] (a single-threaded bare-metal Go runtime for SOCs)
Both of these are security-focused with a clear trade off: sacrifice some performance for memory safe and excellent readability (and auditability). I feel like that's the sweet spot for low-level Go - projects that need memory safety but would rather trade some performance for simplicity.
[1]: https://github.com/google/gvisor
[2]: https://github.com/usbarmory/tamago
- Does Go work well as a systems language?
- Koji vam je sitan bug najviše ostao upamćen?
-
Rust 2024 the Year of Everywhere?
Of course it can, there are companies shipping products written in bare metal Go.
https://www.withsecure.com/en/solutions/innovative-security-...
https://github.com/usbarmory/tamago
-
Embedded Go finally got the first binary release
For comparison, what are the differences in goals and approach with Tamago? https://github.com/usbarmory/tamago
-
Taking a deep dive into C++ gave me more appreciation for Go's simplicity
I've been keeping an eye on TinyGo (Go compiler that targets microcontrollers and uses LLVM) and also TamaGo (allows you to run Go on bare metal, without any C dependency).
-
A native Go userland for your Raspberry Pi 3 or 4 appliances
If you want to go deeper, there is also bare-metal Go runtime for rpi (among others): https://github.com/f-secure-foundry/tamago
- TamaGo – bare metal Go for ARM SoCs
-
ISO C became unusable for operating systems development
> just proves your lack of knowledge
Tone is not needed.
For TamaGo, it seems to allow developers run their application, not build an OS on the hardware. But I have not played with it, you are right.
> TamaGo is a framework that enables compilation and execution of unencumbered Go applications on bare metal
The environment does not seem to allow building a generic operating system [1]. F-Secure ported the runtime itself to boot natively. But please correct me.
> There is no thread support
The environment you run in is specifically curated for Go applications, such as the memory layout. I'd call this an "appliance" rather than enabling Go to be used for full-fledged generic operating system implementations.
[1] https://github.com/f-secure-foundry/tamago/wiki/Internals
s2protocol
- How can I get my list of actions from my replays?
-
[Showoff Saturday] I made a search engine for StarCraft 2 games
I used mpyq and s2protocol as reference implementations and ported them to Rust.
-
Rust 2024 the Year of Everywhere?
vm = virtual machine/memory?
I'm porting this Python library to Rust: https://github.com/Blizzard/s2protocol.
For the shitty, first pass prototype code I've written so far I've seen a ~30-40x speedup compared to the Python implementation and a ~2x speedup compared to a Go implementation by someone else: https://github.com/icza/s2prot.
That is why I chose Rust over a GC language like Go. It's a lot faster out of the box, even without me having a strong understanding of memory operations.
-
Replay Auto Caster
You got programming knowledge? I'm not trying to dunk on you but if you don't know how these work then you won't be able to build the thing anyway. First result when you search for stuff is the official Blizzard s2protocol parser https://github.com/Blizzard/s2protocol
-
Rest Apis
same, the main thing we need is the equivalent of https://github.com/Blizzard/s2protocol for stormgate.
-
Man, I feel like an idiot.
React basics are not that complicated. I ported the core functionality of this Python library to Rust in ~1w with zero prior Rust experience, and I definitely think Rust is more complicated than React.
- Could humans theoretically read the code of a SC-replay?
-
Simple Python program to search replays
pip install s2protocol (this is a blizzard vended package for parsing replay files - see https://github.com/Blizzard/s2protocol)
-
Just finish my SC2 dashboard, do you guys like it ? :)
If not you will have to either learn programming, this tool by blizzard is capable of extracting replay stats: https://github.com/Blizzard/s2protocol
What are some alternatives?
nerves - Craft and deploy bulletproof embedded software in Elixir
s2prot - Decoder/parser of Blizzard's StarCraft II replay file format (*.SC2Replay)
gokrazy - turn your Go program(s) into an appliance running on the Raspberry Pi 3, Pi 4, Pi Zero 2 W, or amd64 PCs!
hylo - The Hylo programming language
checkedc - Checked C is an extension to C that lets programmers write C code that is guaranteed by the compiler to be type-safe. The goal is to let people easily make their existing C code type-safe and eliminate entire classes of errors. Checked C does not address use-after-free errors. This repo has a wiki for Checked C, sample code, the specification, and test code.
usbarmory - USB armory - The open source compact secure computer
go - The Go programming language with support for bare-matal programing
linux - Linux kernel source tree
PyO3 - Rust bindings for the Python interpreter
patch - Patches that add Embedded Go supported architectures to the reference Go compiler
TinyGo - Go compiler for small places. Microcontrollers, WebAssembly (WASM/WASI), and command-line tools. Based on LLVM.
kendryte - Support for Kendryte K210 AI capable SOC