Releases
v0.2.0-beta.7
Compare
Sorry, something went wrong.
No results found
What's Changed
新特性
cURL 扩展 (ext/curl/)
纯 phpc 实现 HTTP/HTTPS 客户端,不依赖 libcurl C 库
35 个函数 + 690 个常量 + 6 个类(CurlHandle/CURLFile 等)
复用 ext/openssl(mbedTLS)和 ext/stream 的 socket 抽象
支持 multipart 文件上传、chunked 解码、FOLLOWLOCATION 重定向
GD 扩展 (ext/gd/)
纯 phpc 实现图像处理,不依赖 libgd/libpng/libjpeg
~90 个函数 + 89 个常量 + 2 个类(GdImage/GdFont)
支持 PNG/GIF/BMP/GD/GD2/WBMP/XBM/TGA 共 8 种编解码
不支持格式(JPEG/WebP 等)调用时抛 RuntimeException 明确报错
array 泛型数组类型系统
array 编译期单态化为独立 C 类型(t_arr_int/t_arr_str 等)
元素紧凑存储(array 比 array 节省 67% 内存)
协变转换机制 + 元素类型追踪 + 特化排序/洗牌
修复
异常处理机制 (include/object/try.h)
TP_SETJMP 宏:MinGW x86_64 SEH + GCC -O2 下使用 _setjmp(buf, NULL)
跳过 RtlUnwindEx,修复 longjmp 跨函数跳转时 ACCESS_VIOLATION
_tp_do_longjmp noinline 辅助函数:隔离 longjmp 调用,防止 GCC 内联
优化破坏 SEH unwind 表
TP_FINALLY 不再吞掉未处理异常:新增 _tp_need_rethrow 标志和保存变量,
TP_END_TRY 据此重抛,修复 try { throw } finally { ... } catch 语义
其他修复
对象唯一 ID 机制(t_object 新增 id 字段,替代 refcount & 0xFFFF)
数组元素引用计数系统性修复(fetchAll 悬垂指针 use-after-free)
数组重赋值自赋值 guard 双重释放
stream_socket_accept 错误处理契约(真错误抛异常,EAGAIN 返回 -1)
macOS -framework 链接支持(TCC 不识别 -framework X 语法)
gcc/clang 下特化排序/洗牌函数指针类型不兼容
isset/empty 返回类型推导缺失
mbedTLS 相关:声明顺序、参数类型、aesni.c 源文件缺失
gcc/clang 静态库归档命令不兼容(改用系统 ar)
You can’t perform that action at this time.