Releases: findstr/silly
Releases · findstr/silly
v0.7.0
v0.7.0 (2025-12-28)
🚀 Key Changes
⚠️ Breaking Changes
- Lua runtime upgraded to 5.5.0.
- New unified, namespaced package structure (
silly.net,silly.store, etc.). - Networking APIs fully redesigned for coroutine-first, object-oriented usage with unified timeout support.
- Standardized error handling: Switched to string-based descriptions and refined EOF behavior.
- Legacy API removal: Removed legacy
cluster.rpcandcluster.msg.
✨ New Features
- Database Enhancements: Added MySQL
caching_sha2_passwordsupport, connection pooling, and a refreshed Redis client API. - Cluster & Service Discovery: New peer-based cluster implementation (experimental) and Etcd v3 client.
- Public C API & Thread Pool: Support for embedding workloads and offloading blocking tasks via
silly.hive. - Developer Tools: New interactive Lua REPL, Dockerfile support, and Zlib compression.
🛠️ Improvements & Fixes
- Protocol Correctness: Major stability improvements for HTTP/2 (flow control), gRPC, and WebSocket (RFC 6455).
- Security: Crypto reimplemented on top of OpenSSL with expanded RSA / EC / JWT support.
- Logging Robustness: Deterministic table truncation and safe fallback for unsupported types.
- Developer Experience: Full LuaLS annotations for all APIs and a new official documentation site.
📖 Documentation: https://findstr.github.io/silly/
🚀 关键改动
⚠️ 不兼容变更 (Breaking Changes)
- Lua 运行时升级至 5.5.0。
- 全新的统一命名空间包结构(如
silly.net,silly.store等)。 - 网络 API 全面重构:采用面向对象及协程优先设计,并提供统一的超时管理。
- 错误处理标准化:改用字符串描述错误,并明确了 EOF(流结束)的返回值行为。
- 旧版本清理:移除了遗留的
cluster.rpc与cluster.msg接口。
✨ 新特性
- 数据库增强:新增 MySQL
caching_sha2_password认证与连接池支持;重构了 Redis 客户端 API。 - 集群与服务发现:新增 peer 模式集群实现(实验性)以及 Etcd v3 客户端支持。
- 公共 C API 与线程池:支持嵌入式集成,并通过
silly.hive线程池卸载阻塞任务。 - 开发者利器:新增交互式 Lua REPL、官方 Dockerfile 支持及 Zlib 压缩功能。
🛠️ 优化与修复
- 协议精进:主要提升 HTTP/2(流量控制)、gRPC 及 WebSocket(RFC 6455 合规) 的稳定性。
- 安全加固:基于 OpenSSL 重新实现 crypto,统一加密语义并扩展 RSA / EC / JWT 支持。
- 日志系统更加稳健:表结构截断行为确定化,且不支持的值类型将安全降级为字符串。
- 开发体验 (DX):所有公开 API 均补全 LuaLS 注解,配套全新官方文档站。
📖 文档地址: https://findstr.github.io/silly/
v0.6.0
Bug fixes:
- Fix
websocketframe header byte order - Fix
http2scheme header && reset_frame error code - Fix
http2window handle - Fix some lint warnings
New features:
- Add
grpcsupport - Add
signalsupport - Add
cancelfortimerand redesign node cache - Add
metricsof prometheus - Add distributed tracing via log(expriemental)
- Add
cluster.luato provide a more flexible alternative tocluster.rpcandcluster.msg - Add annotations for LuaLS/lua-language-server to enable type checking and enhance navigation capabilities
- Support
TLSsnicert - Support
HTTPautomatic switching between http and http2 - Support
ETCDv3client(kv, lease, watch) partially - Handle
websocketconnection close gracefully - Remove
redisresponse of '\r\n' - Refine endless loop warning introduce tracebacks for improved problem diagnosis
- Use clang-format to unify code style
- Reimplement startup mechanism and module layout
- Reimplement logger to support log level(debug, info, warn, error) and more faster
v0.5.0
Bug fixes:
- fix incorrect session type in netpacket.rpcpack
- fix incorrect call of lua_gc
- handle socket close event in send_msg_tcp/send_msg_udp
New features:
- add cluster module to provide some help for cluster networking
- use parameters instead of environment variables to override startup variables (#984308b)
- add examples for timer,socket,RPC,HTTP,WebSocket
- refine core.timeout for a large number of timer events(delay creating a task for timer event can reduce the memory usage to 30% of the original)
- crypto.base64encode support URL safe code and add crypto.sha256, crypto.digestsign, crypto.digestverify
- TLS support SNI, ALPN
- support HTTP2
- refine patch(more flexible, more powerful)
- more monitor data(timer event info, more memory info)
v0.4.0
Bug fixes:
- fix timer session race condition
- fix tls.read, may read broken data
- fix dns name cache
- fix sys.socketq(renamed from sys.socketdispatch) auth race condition
- fix dns session overflow
- fix netpacket when hash conflict
- fix core.exit, no code should be run after core.exit()
- fix saux.rpc when more than one message pops up in a loop
- fix saux.rpc timer leak
New features:
- dns support ipv6 server address
- http support dom parser
- add wakegroup for waiting for a collection of coroutines to finish
- add fd round back check for sys.socket
- add monitor thread to monitor slow events(events that take too long to process)
- abstract
task(special use of coroutine)for wrapper of event(socket, timer) - console add task/net info for debug
- core.env support number index key
- add flow control
- upgrade to lua5.4 and enable generational gc by default
v0.3.0
Bug fixes:
- netpacket expand queue
- netstream.check and netstream gc
- profiler timestamp
- aes cbc mode
- redis reconnect the dbindex will be reseted
New features:
- add ssl for http.client
- add base64
- add hotpatch for lua code
- add pidfile
- import jemalloc as default memory allocator
- import accept4 in linux
- import cpu affinity which can be user defined in linux
- config file add 'include' command
- remove old rpc and add saux.rpc and saux.msg to support rpc/msg server
- socket add 'tag' for more easy debug
- config file support shell environment
- support multicast in data send level
- synchroize zproto to support float
- dns support cname nested
- socket.write support pass string array as parameter
- redis support pipeline
- core.write support lightuserdata/string/string array
- process the condition of run out of fd when accept
- remove lualib-log and refine daemon log to replace it