Skip to content

Releases: 508364/NetLeaf

V2.4.1

Choose a tag to compare

@508364 508364 released this 25 Sep 11:07

更新了一堆东西,自己看CHANGELOG.md去,写不完了

v2.2.2

Choose a tag to compare

@508364 508364 released this 22 Jul 14:47

变更 - 静态库支持:

静态库已不再支持 - 由于扩展库需要动态链接以共享全局状态
如需静态链接,请使用 v2.2.1 或更早版本
所有模块现在仅构建为动态库(DLL/SO)
新增功能 - 扩展库系统:

功能: 支持第三方开发者创建动态扩展库
文件: ,include/netleaf_module.hsrc/netleaf_module.c
特性:
扩展库定义结构nl_extension_info_t
用户定义字段:库名称、库ID、版本、作者、详情(可选,限制50个中文字符)
平台支持字符串: 或 (大小写不限,顺序不限)"Windows,Linux,MacOS""all"
library_value由主库自动分配,用户无需设置
扩展库自动加载:放入 目录, 时自动加载extensions/nl_modules_init()
扩展库注册/注销 API
查询 API:nl_extension_get_value_by_id() / nl_extension_get_id_by_value()
描述长度验证(最多50个中文字符)
示例:examples/plugin_example/
文档:wiki/Extension.md
新增功能 - Web服务器文件热加载 (v2.2.2):

功能: 支持从外部文件加载HTML/Vue/JSON,修改后刷新立即生效
API:
nl_web_add_html_file(server, path, file_path)- 从文件加载HTML
nl_web_add_vue_file(server, path, file_path)- 从文件加载Vue
nl_web_add_json_file(server, path, file_path)- 从文件加载JSON
特性:
每次请求时重新读取文件内容
最大支持10MB文件
自动获取文件绝对路径
返回值:NL_OK/NL_EINVAL/NL_EFILE/NL_ENOMEM
平台: Windows/Linux/macOS(全平台支持)
新增功能 - HTTP重定向 (v2.2.2):

功能: 支持配置临时重定向(302)和永久重定向(301),可在运行时切换
API:
nl_web_add_redirect(server, path, target_url)- 添加重定向
nl_web_set_redirect_type(server, type)- 运行时设置重定向类型(301/302)
nl_web_get_redirect_type(server)- 查询当前重定向类型
特性:
支持内部重定向(同服务器路径)
支持外部重定向(完整URL)
默认302临时重定向,可运行时切换为301永久重定向
返回标准HTTP响应头
平台: Windows/Linux/macOS(全平台支持)
新增功能 - 智能检测 (v2.2.2):

功能: 、 自动识别内容类型nl_web_add_htmlnl_web_add_vuenl_web_add_json
特性:
URL (/) → 自动创建重定向路由http://https://
文件路径 → 自动创建热更新路由
静态内容 → 直接作为内联内容处理
平台: Windows/Linux/macOS(全平台支持)
新增功能 - 运行时动态路由管理 (v2.2.2):

功能: 在服务器运行期间动态添加、移除、查询和更新路由
API:
nl_web_add_route(server, path, content, content_type)- 添加静态内容路由
nl_web_remove_route(server, path)- 移除指定路径的路由
nl_web_get_route_count(server)- 获取当前路由数量
nl_web_list_routes(server, paths, max_paths)- 列出所有路由路径
nl_web_update_route(server, path, content, content_type)- 更新路由内容
特性:
线程安全:使用互斥锁保护路由操作
支持运行时动态修改路由,无需重启服务器
仅支持静态内容类型路由的更新(不支持重定向和文件路由)
平台: Windows/Linux/macOS(全平台支持)
移除的公开API:

布尔值转换API(等)已改为内部静默处理,不再对外暴露nl_bool_from_string
新增功能 - Vue 后端支持 (netleaf_vue):

功能: Vue.js 后端支持和 HTML 生成模块
文件: ,include/netleaf_vue.hsrc/vue/netleaf_vue.c
特性:
Vue CDN 配置(unpkg, cdnjs, jsdelivr, local)
Vue 代码检测和自动导入
HTML 页面生成(带 Vue CDN)
预定义组件生成(系统信息、性能监控)
变量替换支持
平台: Windows/Linux/macOS(全平台支持)
构建流程简化:

build_all.bat / build_all.sh- 直接运行即可构建
自动创建 目录extensions/
版本号更新为 2.2.2
多语言错误消息增强:

支持一个库指定多个同语言文件
支持多库共享翻译文件(需显式声明)
错误码重复注册检测
异步加载支持优化
模块系统优化:

新增 Vue 模块类型NL_MODULE_VUE
新增扩展库管理 API
统一的模块注册和管理
跨平台兼容性改进
Bug 修复:

修复 Linux 构建警告( 隐式声明、未使用参数)strdup
修复 macOS 链接器选项问题(仅 Linux)-fstack-protector-strong
修复插件加载中的 未声明问题va_list
修复跨平台类型兼容性问题( 替换为 )HMODULEnl_plugin_handle_t
修复枚举重复定义问题( → )nl_lazy_status_tnl_module_lazy_status_t

v2.2.1

Choose a tag to compare

@508364 508364 released this 21 Jun 07:04

新增功能 - IPC通讯服务 (netleaf_ipc):

  • 功能: 进程间通讯服务,支持 Windows Named Pipe 和 Linux Unix Domain Socket
  • 文件: src/ipc/
    • netleaf_ipc.c - 核心模块
    • src/windows/netleaf_ipc_windows.c - Windows 实现
    • src/linux/netleaf_ipc_linux.c - Linux 实现
  • 特性:
    • 支持服务端监听和客户端连接
    • 跨进程数据传输
    • 线程安全设计
  • 平台: Windows/Linux(macOS暂不支持)

新增功能 - 同端口链路聚合 (netleaf_linkagg):

  • 功能: 单端口监听,将请求转发到多个后端(HTTP/IPC)
  • 文件: src/linkagg/
    • netleaf_linkagg.c - 核心模块
    • src/windows/netleaf_linkagg_windows.c - Windows 实现
    • src/linux/netleaf_linkagg_linux.c - Linux 实现
  • 特性:
    • 负载均衡策略: Round Robin, Random, Least Connections, Weighted Round Robin
    • 支持 HTTP 和 IPC 后端
    • 同端口路由聚合
  • 平台: Windows/Linux(macOS暂不支持)

统一模块接口:

  • 功能: 所有独立模块通过统一接口进行管理
  • 文件: include/netleaf_module.h, src/netleaf_module.c
  • 特性:
    • 模块信息结构 nl_module_info_t
    • 模块注册/注销 API
    • 模块版本、能力、平台支持查询
    • 统一的模块管理 API

多语言错误消息 (netleaf_lang):

  • 功能: 统一的多语言错误消息翻译库
  • 文件: include/netleaf_lang.h, src/lang/netleaf_lang.c
  • 特性:
    • 无限语言支持(en_us, zh_cn, ja_jp, ko_kr 等)
    • 语言代码格式强制 xx_xx(忽略大小写)
    • 分开注册语言和错误消息
    • 自定义语言代码和错误码注册
    • 多文件支持(一个库多个语言文件)
    • 多库共享文件(需显示声明)
    • 错误码重复检测
    • 异步加载支持
    • 跨平台:Windows / Linux / macOS
  • 平台: ✅ Windows / ✅ Linux / ✅ macOS

Bug修复:

  • 修复边缘触发 epoll 循环读取问题
  • 修复 socket 双重关闭问题
  • 修复内存泄漏问题(Levenshtein栈分配、g_global_matcher释放)
  • 修复缓冲区溢出问题
  • 修复线程安全问题(原子操作、线程安全时间函数)

优化:

  • 启用 LTO 链接时优化
  • 移除 usleep(100ms) 忙等待,改用 poll
  • Bubble sort 替换为 qsort
  • 添加安全加固编译标志
  • 构建系统优化(OBJECT库避免重复编译)

构建系统更新:

  • CMake选项: BUILD_IPC=ON, BUILD_LINKAGG=ON
  • ASan支持: BUILD_ASAN=ON

v2.2.0

Choose a tag to compare

@508364 508364 released this 13 Jun 09:43

新增功能 (v2.2.0)

  • ✅ macOS平台支持: 初步支持macOS (kqueue事件机制)
  • ✅ Auto-complete机制: 自动补全charset标签和自动引入Vue库(独立可拆卸模块)
  • ✅ Auto-route机制: 404时自动查找相近端点并提示(独立可拆卸模块)
  • ✅ 自定义错误页面: 支持设置自定义错误页面模板,强制预留变量区域
  • ✅ 错误页面联动: 错误页面可与autoroute联动,显示路由建议

查看完整版本历史: CHANGELOG.md

v2.1.6

Choose a tag to compare

@508364 508364 released this 08 Jun 15:15

新增功能 - 编码动态适配:

  • nl_web_enable_auto_encoding(server, enable) - 启用/禁用自动编码协商
  • nl_web_is_auto_encoding_enabled(server) - 检查是否启用自动编码
  • nl_web_set_fallback_encoding(server, encoding) - 设置回退编码
  • nl_web_get_negotiated_encoding(server) - 获取协商后的编码
  • nl_encoding_convert(input, len, src_enc, dst_enc) - 编码转换函数
  • nl_encoding_detect(input, len) - 自动检测字符串编码
  • nl_encoding_get_system_default() - 获取系统默认编码

编码支持:

  • UTF-8
  • GBK
  • GB2312
  • GB18030
  • Big5
  • ISO-8859-1
  • US-ASCII
  • UTF-16

全场景支持:

  • ✅ 控制台输出
  • ✅ Web响应
  • ✅ HTML页面
  • ✅ Vue组件
  • ✅ JSON响应
  • ✅ TOML响应

特性:

  • 自动解析客户端Accept-Charset请求头
  • 运行时自动转码响应内容
  • 双向编码转换(任意编码之间互相转换)
  • 跨平台支持(Windows/Linux)
  • 懒加载机制:功能拉起使用后自动下线,减少内存占用
  • 智能优化:仅对非ASCII字符进行转码,减少性能开销

编译器编码修复:

  • 默认使用UTF-8编码编译
  • 解决中文乱码问题

v2.1.5

Choose a tag to compare

@508364 508364 released this 08 Jun 05:53

v2.1.5

新增功能:

  • nl_sys_info_get_os_name() - 获取操作系统名称
  • nl_sys_info_get_architecture() - 获取系统架构
  • nl_sys_info_get_cpu_model() - 获取CPU型号
  • nl_sys_info_get_total_ram() - 获取总内存(字节)
  • nl_sys_info_get_runtime_version() - 获取运行库版本
  • nl_sys_info_set_ram_unit(unit) - 设置RAM进制(1000/1024)
  • nl_sys_info_clear_cache() - 清除缓存(用于重新加载)
  • 懒加载机制: 系统信息仅在首次调用时加载
  • 安全增强: nl_web_stop_by_port() 只能停止本库启动的端口

RAM进制配置:

  • Linux 默认: 1000进制(符合SI标准)
  • Windows 默认: 1024进制(传统二进制)
  • 可通过 nl_sys_info_set_ram_unit(NL_RAM_UNIT_DECIMAL) 或 nl_sys_info_set_ram_unit(NL_RAM_UNIT_BINARY) 切换

安全更新:

  • 只能停止由本库启动的端口,防止误操作其他进程的端口

懒加载支持:

  • nl_lazy_enable(enable) - 全局启用/禁用懒加载
  • nl_lazy_enable_module(module) - 启用指定模块的懒加载
  • nl_lazy_disable_module(module) - 禁用指定模块的懒加载
  • nl_lazy_is_enabled(module) - 检查模块是否启用懒加载
  • nl_lazy_clear_all_cache() - 清除所有模块的缓存
  • nl_lazy_preload_module(module) - 预加载指定模块

支持懒加载的模块:

  • HTTP (NL_LAZY_MODULE_HTTP)
  • WebSocket (NL_LAZY_MODULE_WEBSOCKET)
  • TCP (NL_LAZY_MODULE_TCP)
  • UDP (NL_LAZY_MODULE_UDP)
  • TOML (NL_LAZY_MODULE_TOML)
  • JSON (NL_LAZY_MODULE_JSON)
  • SysInfo (NL_LAZY_MODULE_SYSINFO)

模块启停与状态管理:

  • nl_lazy_stop_module(module) - 停止指定模块并释放资源
  • nl_lazy_get_module_status(module) - 获取模块状态(未加载/加载中/已加载/停止中/已停止)
  • nl_lazy_is_module_loaded(module) - 检查模块是否已加载

多线程优化:

  • nl_lazy_set_thread_count(count) - 设置线程池大小(1-256)
  • nl_lazy_get_thread_count() - 获取当前线程池大小
  • 默认线程数: 4
  • 支持根据应用场景调整:IO密集型推荐较大线程数,CPU密集型推荐CPU核心数

v2.1.0

Choose a tag to compare

@508364 508364 released this 07 Jun 15:23
  • 简化启动: nl_web_create(port) 创建即启动,无需单独调用 nl_web_start
  • 按端口停止: nl_web_stop_by_port(port) 支持通过端口号停止服务器
  • 自动清理: nl_web_set_auto_cleanup(1) 程序退出时自动释放所有服务器资源
  • 变量硬编码: 服务器端变量替换,用户F12无法看到原始变量名
  • 自定义编码: 支持设置响应编码(UTF-8等)
  • 完整日志系统: 支持DEBUG/INFO/WARN/ERROR级别
  • 自动交叉编译检测: Linux脚本自动检测可用工具链
  • Debug模式: 一键启用调试日志
  • 异步并发优化: 完整的异步IO支持,优化性能消耗

v2.0.0

Choose a tag to compare

@508364 508364 released this 07 Jun 05:01

V2.0.0分布

本来是有1.0系列的,但是很明显,我忘记了,哎嘿~
We totally had a 1.0 series, but it completely slipped my mind. Hehe~