All Projects → Xe → Olin

Xe / Olin

Licence: mit
Webassembly + Event Sourcing

Programming Languages

go
31211 projects - #10 most used programming language
rust
11053 projects

Projects that are alternatives of or similar to Olin

Event bus
🏄 Traceable, extendable and minimalist **event bus** implementation for Elixir with built-in **event store** and **event watcher** based on ETS.
Stars: ✭ 563 (+32.16%)
Mutual labels:  event-sourcing, eventbus
Messagebus
A MessageBus (CommandBus, EventBus and QueryBus) implementation in PHP7
Stars: ✭ 178 (-58.22%)
Mutual labels:  event-sourcing, eventbus
Asombroso Ddd
Una lista cuidadosamente curada de recursos sobre Domain Driven Design, Eventos, Event Sourcing, Command Query Responsibility Segregation (CQRS).
Stars: ✭ 41 (-90.38%)
Mutual labels:  event-sourcing, eventbus
reacted
Actor based reactive java framework for microservices in local and distributed environment
Stars: ✭ 17 (-96.01%)
Mutual labels:  event-sourcing, eventbus
Run Aspnetcore Microservices
Microservices on .Net platforms which used Asp.Net Web API, Docker, RabbitMQ, MassTransit, Grpc, Ocelot API Gateway, MongoDB, Redis, PostgreSQL, SqlServer, Dapper, Entity Framework Core, CQRS and Clean Architecture implementation. Also includes Cross-Cutting concerns like Implementing Centralized Distributed Logging with Elasticsearch, Kibana and SeriLog, use the HealthChecks with Watchdog, Implement Retry and Circuit Breaker patterns with Polly and so on.. See Microservices Architecture and Step by Step Implementation on .NET Course w/ discount->
Stars: ✭ 406 (-4.69%)
Mutual labels:  event-sourcing, eventbus
Netcoremicroservicessample
Sample using micro services in .NET Core 3.1 Focusing on clean code
Stars: ✭ 403 (-5.4%)
Mutual labels:  event-sourcing, eventbus
Event Source Cqrs Sample
Sample ES/CQRS application
Stars: ✭ 380 (-10.8%)
Mutual labels:  event-sourcing
Bytecoder
Rich Domain Model for JVM Bytecode and Framework to interpret and transpile it.
Stars: ✭ 401 (-5.87%)
Mutual labels:  webassembly
Sqlstreamstore
Stream Store library targeting RDBMS based implementations for .NET
Stars: ✭ 374 (-12.21%)
Mutual labels:  event-sourcing
Leopotamgrouplibraryunity
Tools library for unity 3d game engine: animator graph helpers, serialization (json), localization, event routing (eventbus, ui actions), embedded scripting, uGui xml markup, threading, tweening, in-memory protection and other helpers (pure C#)
Stars: ✭ 373 (-12.44%)
Mutual labels:  eventbus
Vr Dos
💾 Virtual Reality DOS 💾
Stars: ✭ 416 (-2.35%)
Mutual labels:  webassembly
Akkatecture
a cqrs and event sourcing framework for dotnet core using akka.net
Stars: ✭ 414 (-2.82%)
Mutual labels:  event-sourcing
Faasm
High-performance stateful serverless runtime based on WebAssembly
Stars: ✭ 403 (-5.4%)
Mutual labels:  webassembly
Cheetah
On-device streaming speech-to-text engine powered by deep learning
Stars: ✭ 383 (-10.09%)
Mutual labels:  webassembly
Bootstrapblazor
A set of enterprise-class UI components based on Bootstrap and Blazor
Stars: ✭ 403 (-5.4%)
Mutual labels:  webassembly
Lucet
Lucet, the Sandboxing WebAssembly Compiler.
Stars: ✭ 4,006 (+840.38%)
Mutual labels:  webassembly
Devring
安卓基础开发库,包含各常用模块,让开发简单点。
Stars: ✭ 414 (-2.82%)
Mutual labels:  eventbus
Lahja
Lahja is a generic multi process event bus implementation written in Python 3.6+ to enable lightweight inter-process communication, based on non-blocking asyncio
Stars: ✭ 374 (-12.21%)
Mutual labels:  eventbus
Es4j
Event capture and querying framework for Java
Stars: ✭ 402 (-5.63%)
Mutual labels:  event-sourcing
Rustynes
👾 An NES emulator by Rust and WebAssembly
Stars: ✭ 399 (-6.34%)
Mutual labels:  webassembly

olin

Actions Status Go Report Card GoDoc powered by WebAssembly

Olin is like the JVM for WebAssembly. It wraps WebAssembly with a set of functions to access the outside world and keeps track of things like how many instructions were used, how many syscalls were made and how much memory was used. This helps with profiling code.

To view Olin in action, click here.

Background

Very frequently, I end up needing to write applications that basically end up waiting forever to make sure things get put in the right place and then the right code runs as a response. I then have to make sure these things get put in the right places and then that the right versions of things are running for each of the relevant services. This doesn't scale very well, not to mention is hard to secure. This leads to a lot of duplicate infrastructure over time and as things grow. Not to mention adding in tracing, metrics and log aggreation.

I would like to change this.

I would like to make a prescriptive environment kinda like Google Cloud Functions or AWS Lambda backed by a durable message queue and with handlers compiled to webassembly to ensure forward compatibility. As such, the ABI involved will be versioned, documented and tested. Multiple ABI's will eventually need to be maintained in parallel, so it might be good to get used to that early on.

I expect this project to last decades. I want the binary modules I upload today to be still working in 5 years, assuming its dependencies outside of the module still work.

Blogposts

Before asking questions or using Olin in this early state, I ask you please read these blogposts outlining the point of this project and some other bikeshedding I have put out on the topic:

These will explain a lot that hasn't been fit into here yet.

ABI's Supported

Common WebAssembly

Olin includes support for binaries linked against the Common WebAssembly specification. Please see the tests in cmd/cwa for more information. Currently the Common WebAssembly is fairly basic, but at the same time there are currently the most tests targeting Common Webassembly. The tests for the Common WebAssembly spec can be found here.

Go

Olin also includes support for running webassembly modules created by Go 1.12's webassembly support. It uses the wasmgo ABI package in order to do things. Right now this is incredibly basic, but should be extendable to more things in the future.

As an example:

// +build js,wasm ignore
// hello_world.go

package main

func main() {
	println("Hello, world!")
}

when compiled like this:

$ GOARCH=wasm GOOS=js go1.12.1 build -o hello_world.wasm hello_world.go

produces the following output when run with the testing shim:

=== RUN   TestWasmGo/github.com/Xe/olin/internal/abi/wasmgo.testHelloWorld
Hello, world!
--- PASS: TestWasmGo (1.66s)
    --- PASS: TestWasmGo/github.com/Xe/olin/internal/abi/wasmgo.testHelloWorld (1.66s)

Currently Go binaries cannot interface with the Dagger ABI. There is an issue open to track the solution to this.

Future posts will include more detail about using Go on top of Olin.

Under the hood, the Olin implementation of the Go ABI currently uses Dagger.

Project Meta

To follow the project, check it on GitHub here. To talk about it on Slack, join the Go community Slack and join #olin.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].