memory64
Our great sponsors
raylib-5k | memory64 | |
---|---|---|
5 | 7 | |
22 | 178 | |
- | 8.4% | |
0.0 | 8.5 | |
over 1 year ago | 4 days ago | |
Go | WebAssembly | |
- | GNU General Public License v3.0 or later |
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.
raylib-5k
-
Making Games in Go for Absolute Beginners
A game made with it for raylib game jam along with the raylib bindings and other engine stuff: https://github.com/nikki93/raylib-5k
-
Show HN: I made a 2D shoot 'em up game with Go, using Entity Component System
I do also really like Go for various reasons, and have been working on a Go -> C++ transpiler and associated ECS libs to make a personal game project with. I used it to make a game for Raylib game jam earlier this year too: https://github.com/nikki93/raylib-5k You can see what the development workflow looks like in this video (the ECS stuff also has an editor): https://www.youtube.com/watch?v=8He97Sl9iy0
I'm trying to decide how much time I should devote to making this easier to set up / use by other people in the medium term, since it's just a side project for me. Might make a codespaces template so it's quick to get started.
-
Why Am I Excited About WebAssembly?
For the client I use a simple go -> c++ compiler I wrote and compile to wasm from that actually. It had zero overhead interfacing to / calls to C/C++ (including generics<->templates) since it's just generating that. Example web game made with that: https://github.com/nikki93/raylib-5k
I think I've seen wasmtime before. If I needed to interface to any C/C++ things on the server I would probably just write in C/C++ (or Gx) yeah.
-
Generics can make your Go code slower
Sweet! I've been using it for the same. Example game project (did it for a game jam): https://github.com/nikki93/raylib-5k -- in this case the Go gets transpiled to C++ and runs as WebAssembly too. Readme includes a link to play the game in the browser. game.gx.go and behaviors.gx.go kind of show the ECS style.
-
Packet Lost: A game (playable in browser!) made for Raylib jam using a Go->C++ transpiler and WebAssembly. GitHub repo link in comments!
GitHub repo: https://github.com/nikki93/raylib-5k
memory64
-
Top 8 Recent V8 Updates
A completed implementation of memory64 for memory-hungry applications.
-
Extism Makes WebAssembly Easy
Indeed, webassembly is moving extremely slowly. I started a project years ago expecting https://github.com/WebAssembly/memory-control/blob/main/prop... and https://github.com/WebAssembly/memory64 to be fixed at some point. Neither are yet, and the project still suffers from it to this day.
I think wasm is still great without these fixes, but I have lost confidence in the idea that wasm will reach its full potential any time soon.
-
How Photoshop solved working with files larger than can fit into memory
It's in the works: https://github.com/WebAssembly/memory64
Starting with 32bit had some performance advantages because 64bit runtimes can use virtual memory shenanigans to implement bounds checking with zero overhead. In wasm64 they'll have to do explicit bounds checking instead.
-
Transformers.js
Right - currently, everything runs using WASM (32-bit, with 64-bit coming soon [1,2]), and I plan to add support for WebGPU soon!
(WebGPU is the successor to WebGL, which is coming out in April 2023 [3])
[1] https://github.com/WebAssembly/memory64/issues/36#issuecomme...
-
What was the rational for 32-bit memory addresses in WebAssembly? It seems very short-sighted, considering it only came out pretty recently in 2017
It shouldn't be a big surprise that a 64-bit pointer extension is out there and being worked on. The great thing about a VM is you can integrate major changes like this when they are needed and with the benefit of experience and hindsight. If the 4GB limit turns out to be restrictive then it can be lifted.
- Why Am I Excited About WebAssembly?
-
Increasing Smart Contract Canister Memory Proposal is live for review
The goal of this proposal is to increase the amount of memory that canisters can access [eventually] bound only by the actual capacity of the subnet. Since, the Memory64 proposal is not standardized 1 yet and its implementation 1 in Wasmtime is not production ready yet, this proposal enables the increase by introducing a new stable memory API.
What are some alternatives?
donburi - Just another ECS library for Go/Ebitengine
interface-types
goloader - load and run golang code at runtime.
wasmtime - A fast and secure runtime for WebAssembly
usbarmory - USB armory - The open source compact secure computer
botnet - Multiplayer programming game using Rust and WebAssembly
temporal-polyfill - A lightweight polyfill for Temporal, successor to the JavaScript Date object
airplanes - A 2D shoot 'em up game made with Go, Ebitengine, and donburi. Featuring ECS (Entity Component System).
proposal-temporal - Provides standard objects and functions for working with dates and times.
proposal - Go Project Design Documents
component-sandbox-demo