go-iterator
go
Our great sponsors
go-iterator | go | |
---|---|---|
2 | 1696 | |
4 | 109,550 | |
- | 1.4% | |
0.0 | 10.0 | |
6 months ago | 6 days ago | |
Go | Go | |
- | BSD 3-clause "New" or "Revised" 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.
go-iterator
-
1.18 is released
I already played around a bit wit the beta a while back and made an iterator library to get to know this new language. It's here for anyone interested: https://github.com/polyfloyd/go-iterator
-
iter: Generic, lazy iterators for Go 1.18
Regarding call chaining, it is still possible to chain things with operations that return different types, but they have to be done with functions instead of methods, so the result is still the same, just it's a little less readable. There is a generic iterator implementation by polyfloyd that doesn't support method chaining, but imo being able to chain iterators is one of their biggest strengths, since implementing lazy evaluation manually for a single operation isn't that difficult, its when you need to perform multiple kinds of manipulations that it gets messy.
go
-
Immutable references in Go?
https://github.com/golang/go/issues/32245 and more. But it looks this is not in the recent todo list of Go core team.
-
GitHub - orijtech/structslop: structslop is a static analyzer for Go that recommends struct field rearrangements to provide for maximum space/allocation efficiency.
Official fieldalignment in short erases all comments, due to AST shortcomings when it comes to handling comments. Structslop uses DST (decorated AST) to workaround this problem and has somewhat slightly different algorithm of generated indexes to sort structs.
-
Planning Go 1.21 Cryptography Work
Hello Filippo, thanks for the update.In 1.20 planning you mentioned the proposal to expose a session identifier. Do you still plan to work on this feature?I have some sustainability issues with SFTPGo but I can try sponsoring something for this addition. However I'm pretty sure I won't be able to cover the full cost of development and maintenance so I understand if you have no interest in working on it. Thank you
-
betteralign - structs field alignment static analyzer for Go
For now, compiler doesn't do any layout optimizations/realignments, just struct padding.
In case you are wondering why DST and not AST, in general sense AST does not associate comments to nodes, but it holds fixed offsets. Original fieldalignment tool just erases all struct/field/floating comments due to this issue and while there is a CL with a possible fix, it's still a work in progress as of this time.
-
The Simplicity of Single-File Golang Deployments
OP here,
How are you doing caching without a mod time?
https://github.com/golang/go/issues/44854
Are you re-naming or hashing for cache clearing?
-
Generics stability
The wanted to fix a bug in current implementation where you can create instances of private types using type inference, but it breaks aliases, so until then it's a no go.
With extended backwards compatibility and extended forwards compatibility accepted it doesn't matter that much. If your go.mod says go 1.20 it will always be subject to 1.20 semantics and syntax, no matter which version you chose to compile (as long as it's not terribly far).
-
Java 20 / JDK 20: General Availability
Yes.
When you're in a "tight loop" (e.g. a matrix multiplication, which is basically 3 nested loops that only load data, do math, write data), Java's virtual threads just won't yield. So if you write your app in the "wrong" way, you lose concurrency.
There's a lot of discussion about this from the Go side. The original issue was this one: runtime: tight loops should be preemptible https://github.com/golang/go/issues/10958
> it's possible to write a tight loop (e.g., a numerical kernel or a spin on an atomic) with no calls or allocation that arbitrarily delays preemption. This can result in arbitrarily long pause times as the GC waits for all goroutines to stop.
The proposed (and ultimately accepted solution) is described here: https://github.com/golang/go/issues/24543
> has put significant effort into prototyping cooperative preemption points in loops, which is one way to solve this problem. However, even sophisticated approaches to this led to unacceptable slow-downs in tight loops (where slow-downs are generally least acceptable).
> I propose that the Go implementation switch to non-cooperative preemption using stack and register maps at (essentially) every instruction. This would allow goroutines to be preempted without explicit
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
TinyGo - Go compiler for small places. Microcontrollers, WebAssembly (WASM/WASI), and command-line tools. Based on LLVM.
zig - General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.
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).
Angular - The modern web developer’s platform
golang-developer-roadmap - Roadmap to becoming a Go developer in 2020
RxGo - Reactive Extensions for the Go language.
crystal - The Crystal Programming Language
sqlc - Generate type-safe code from SQL
rust - Empowering everyone to build reliable and efficient software.
Gin - Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance -- up to 40 times faster. If you need smashing performance, get yourself some Gin.
gin-vue-admin - 基于vite+vue3+gin搭建的开发基础平台(支持TS,JS混用),集成jwt鉴权,权限管理,动态路由,显隐可控组件,分页封装,多点登录拦截,资源权限,上传下载,代码生成器,表单生成器,chatGPT自动查表等开发必备功能。