aaaaxy
wazero
aaaaxy | wazero | |
---|---|---|
5 | 52 | |
203 | 4,550 | |
- | 1.6% | |
9.7 | 9.8 | |
9 days ago | 10 days ago | |
Go | Go | |
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.
aaaaxy
-
Making Games in Go for Absolute Beginners
> Your game looks great, congrats on your progress! I especially enjoyed how the zoom works when you're leaving/arrive planets, and the unique propulsion system (also, the anchor made me giggle!).
Thank you. Feedbacks are very much appreciated. There is still a long was until an eventual release, but it's very fun to work on it.
> I tend to not need many, so I'd be curious if you can recall any structure in particular which you couldn't find? No biggie if not.
I had trouble finding basic structures like sets or linked lists, as much as more specific ones like R-tree, M-tree, KD-tree quad-tree or specific kinds of tries.
When quickly searching on Google, there are pretty much always some results, but when looking at the details it's not that great. Most of the packages have some kind of flaw that was a deal-breaker for me. Most common ones are:
- The package is something developed by one guy 4 years ago, and has pretty much no stars and is abandoned
- The structure is somehow backed by the native `map`, meaning that it has the same randomized iteration order
- There is some kind of logic to try to handle multi-threading, mixed-up with the data structure's logic. Often with mutexes/locks, thus killing the performance. My game is pretty much only mono-thread, and I just need something simple and that does not care about synchronization.
- The structure is not generic, but only uses `interface{}`
- The structure lacks tests or have unreadable code made of 1-letter variables
> I'm not a game dev, but I've seen some larger games such as https://github.com/divVerent/aaaaxy/tree/main/internal (if you haven't played it before—do it!) which seems to be able to place everything into separate packages without issue, so perhaps there's something to gleam from their architecture?
Thanks for the reference. After looking at it, is seems to me that they are creating really tiny packages made of one or two files. I don't want my codebase to end-up with thousands of 1-file packages, it does not seem very maintainable. I want to keep having packages with clearly defined purposes and domains.
> Hash map iteration shouldn't be sorted in _any_ language (here's Rust, for example https://play.rust-lang.org/?version=stable&mode=debug&editio... (Python makes it _appear_ as if dicts are sorted hash maps, but that's only because it doesn't only use a hash table, but a vector as well (same as you'd have to do in Go))), otherwise it would cause both portability and security (https://github.com/golang/go/issues/2630) issues. You should probably be using a b-tree if you aren't willing to sort it yourself.
I think that you didn't understand my message (or I didn't explain clearly enough). I do not need the items to be sorted, I need the iteration order to be consistent.
Let's say that I insert A, B and C in a map, then want to iterate on it. I will get an unspecified order, maybe ABC, maybe CBA, maybe BAC, which does not matter to me. However, in any language, this order will be consistent across all future iterations unless the data is changed. This is a natural property of any data structure. So if I got CBA in the first loop, I will also get CBA in the second and third loops.
In golang this is not the case because they actively inserted a random order. It means that even if the data does not change, I may get CBA in the first iteration, but BAC in the second, then ABC... Which created a ton of issues for me.
> If you don't care about unloading https://github.com/pkujhd/goloader
- aaaaxy: A nonlinear 2D puzzle platformer taking place in impossible spaces.
- Aaaaxy is a nonlinear 2D puzzle platformer taking place in impossible spaces
-
⟳ 1 apps added, 37 updated at f-droid.org
AAAAXY (version 1.2.280+20220822.2294.9ff4b8b7): A nonlinear 2D puzzle platformer taking place in impossible spaces.
wazero
-
Wazero: The zero dependency WebAssembly runtime
https://github.com/tetratelabs/wazero/releases/tag/v1.7.0
This includes the final release of the new optimizing compiler, which is a big improvement over the previous one.
The new version also adds experimental support for threads and snapshot/restore (setjmp/longjmp).
This is already being used by go-pgquery, all will mean that sqlc won't need to ship to almost copies of wazero (these features had been implemented on a friendly fork, and have now been up-streamed).
- Wazero v1.6.0
- Show HN: My Go SQLite driver did poorly on a benchmark, so I fixed it
-
Making Games in Go for Absolute Beginners
> Go actually has one of the best WASM runtimes https://github.com/tetratelabs/wazero
-
WASM by Example
Wazero looks super cool. I saw somewhere that programs can be run with a timeout, which sounds great for sandboxing. The program input is just a slice of bytes [1], so an interesting use case would be to use something like Nats [2] to distribute programs to different servers. Super simple distributed computing!
--
1: https://github.com/tetratelabs/wazero/blob/main/examples/bas...
2: https://natsbyexample.com/examples/messaging/pub-sub/go
-
Show HN: Sqinn-Go is a Golang library for accessing SQLite databases in pure Go
It is slower.
The WASM runtime wazero [1] uses a compiler on amd64 and arm64 (on Linux, macOS, Windows, and FreeBSD), but the current compiler is very fast (at compiling), but very naive (generates less than optimal code).
An optimizing compiler is currently being developed, and should be released in the coming months. I'm optimistic that this compiler will cover the performance gap between WASM and modernc.
[1]: https://wazero.io
-
Jacobin: Minimal JVM written in Go and capable of running Java 17 classes
I am a fan of the Jacobin project! For your uses, you may also want to consider wazero [1], a pure-go WebAssembly runtime. Full disclosure: I am on the team :)
[1]: https://wazero.io/
-
Val, a high-level systems programming language
No longer does Wasm/WASI need JS host! There are many spec-compliant runtimes built for environments from tiny embedded systems up to beefy arm/x86 racks:
- https://github.com/bytecodealliance/wasm-micro-runtime
- https://github.com/bytecodealliance/wasmtime
- https://github.com/wasmerio/wasmer
- https://github.com/tetratelabs/wazero
- https://github.com/extism/extism (disclaimer, my company's project - makes wasm easily embeddable into 16+ programming languages!)
-
WebAssembly and Replayable Functions
full disclosure: I don't work on it, but the devs are committers/contributors to https://wazero.io (I am a wazero committer) :)
- Wazero: Zero dependency WebAssembly runtime written in Go
What are some alternatives?
osmdroid - OpenStreetMap-Tools for Android
wasmer - 🚀 The leading Wasm Runtime supporting WASIX, WASI and Emscripten
chaofun-app - 炒饭( https://chao.fun/app )App工程
wasmtime - A fast and secure runtime for WebAssembly
app - Think fearlessly with end-to-end encrypted notes and files. For issues, visit https://standardnotes.com/forum or https://standardnotes.com/help.
wasmer-go - 🐹🕸️ WebAssembly runtime for Go
fritter - A privacy-friendly Twitter frontend for mobile devices
grule-rule-engine - Rule engine implementation in Golang
NewsBlur - NewsBlur is a personal news reader that brings people together to talk about the world. A new sound of an old instrument.
yaegi - Yaegi is Another Elegant Go Interpreter
goloader - load and run golang code at runtime.
gc - Branch of the spec repo scoped to discussion of GC integration in WebAssembly