go
grule-rule-engine
go | grule-rule-engine | |
---|---|---|
2,151 | 5 | |
123,211 | 2,166 | |
0.8% | 1.0% | |
10.0 | 2.6 | |
5 days ago | 2 months ago | |
Go | Go | |
BSD 3-clause "New" or "Revised" License | 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.
go
-
SwissTable: A High-Performance Hash Table Implementation
In 2022, ByteDance proposed an issue recommending that Golang adopt SwissTable for its map implementation. In 2023, Dolt published a blog post titled SwissMap: A Smaller, Faster Golang Hash Table, detailing their design of a swisstable, which garnered widespread attention. The Go core team is reevaluating the swisstable design and has added some related code in the runtime. With some free time during the holidays, let's delve deeper into the principles, compare it to the runtime map, and understand why it might become the standard for map implementation.
-
Some Go web dev notes
https://github.com/golang/go/issues/54380
I didn't know about that. I agree it qualifies as a "weird issue".
-
The perils of transition to 64-bit time_t
Exactly. This is also highly problematic if you try to perform atomic operations against bare 64 bit integers on those systems, because the atomic instructions do require them to be 8 byte aligned. In C11 and later it’s not an issue, because _Atomic(int64_t)’s alignment may be stricter than int64_t.
This was also an issue in Go, because it tries to use the same alignment rules as C to make cgo work. There they also solved it by adding dedicated atomic types.
https://github.com/golang/go/discussions/47141
- gRPC: onde vive? o que come?
-
gRPC: what is it? An introduction...
gRPC is not more than an abstraction over the conventional RPC, using protobuf as the serializer and making requests over http/2. There are some performance considerations when using http/2, and in some cases, using http/1 can be faster! I recommend you to read this benchmark and this open issue on golang/go about the http/2. However, when dealing with requests with a large/complex body, gRPC turns out to be a great solution due to having the protobuf as the serializer, which is much faster than serializing JSON as an example. Elton Minetto wrote a great blog post explaining better those alternatives and benchmarking them. Another great benefit of using protobuf is solving the contract inconsistency between the client and the server since they both use the same .proto files.
-
Register Allocation in the Go Compiler
Really appreciate the article and the pointer to Go's SSA backend, which appears to implement common optimization passes like SCCP succinctly with good comments[0]. It's always nice to see harder concepts implemented with simplicity and readability in mind.
[0] https://github.com/golang/go/blob/master/src/cmd/compile/int...
-
Decrypt Go: varint
Recently, I discovered that the Go standard library includes a built-in implementation of varint, found in encoding/binary/varint.go. This implementation is similar to the varint used in protobuf. Using the Golang standard library's varint source code, we will systematically learn and review the concept of varint. If you're familiar with protobuf, you probably already know that all integer types (except fixed types like fixed32 and fixed64) are encoded using varint.
- Go crypto package: obtain a FIPS 140-3 validation
-
Interning in Go
We agreed to make the threadsafeness more explicit in the documentation of the 'unique' package: https://github.com/golang/go/issues/69637
-
The implications of running Go in a containerised environment.
Now Go is NOT CFS aware golang/go#33803 therefore GOMAXPROCS will default to using all 8 cores of the Task.
grule-rule-engine
- GRule – Rule Engine
-
Choosing scripting extension - need advice
You should take a look at Grule https://github.com/hyperjumptech/grule-rule-engine
-
Grule rule engine v1.9.0 is released. Grule is a Rule Engine library for the Golang programming language. Inspired by the acclaimed JBOSS Drools, done in a much simple manner.
However, theres a go-bench report here.
What are some alternatives?
v - Simple, fast, safe, compiled language for developing maintainable software. Compiles itself in <1s with zero library dependencies. Supports automatic C => V translation. https://vlang.io
expr - Expression language and expression evaluation for Go [Moved to: https://github.com/expr-lang/expr]
TinyGo - Go compiler for small places. Microcontrollers, WebAssembly (WASM/WASI), and command-line tools. Based on LLVM.
yaegi - Yaegi is Another Elegant Go Interpreter
zig - General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.
clash - A rule-based tunnel in Go.
Nim - Nim is a statically typed compiled systems programming language. It combines successful concepts from mature languages like Python, Ada and Modula. Its design focuses on efficiency, expressiveness, and elegance (in that order of priority).
wazero - wazero: the zero dependency WebAssembly runtime for Go developers
Angular - Deliver web apps with confidence 🚀
traefik - The Cloud Native Application Proxy
golang-developer-roadmap - Roadmap to becoming a Go developer in 2020
expr - Expression language and expression evaluation for Go