[250214] curl 8.12.0 版本发布 | ISPC 1.26.0 发布:改进 ARM 支持、新增通用目标及其他优化

131 阅读4分钟

curl 8.12.0 版本发布,带来大量改进和错误修复

curl 8.12.0 已正式发布!此版本带来了众多新功能、改进和错误修复,进一步提升了 curl 的性能和稳定性。

主要变化:

  • 新增功能:
    • curl 命令新增字节范围支持,可从文件中读取变量。
    • --etag-save 选项现在支持 --create-dirs 选项,可以创建目录。
    • getinfo 新增 CURLINFO_QUEUE_TIME_Ttime_queue 变量,提供队列时间信息。
    • getinfo 提供 HTTP 和代理使用的身份验证信息。
    • OpenSSL 支持使用 PKCS#11 提供程序中的密钥和证书。
    • QUIC:通过 CURLSSLOPT_EARLYDATA 支持 gnutls 的 0-RTT。
    • 新增 ssls-export 功能,用于 SSL 会话导入/导出。
  • 移除功能:
    • 移除对 Hyper 协议的支持。

错误修复:

此版本修复了大量的错误,涵盖了各种功能和模块,包括:

  • 内存泄漏修复(asyn-ares, ngtcp2)。
  • 安全性提升(altsvc, cookie, x509asn1)。
  • 构建系统改进 (autotools, cmake, msvc)。
  • 文档更新和完善 (cmdline-opts, CURLOPT, docs)。
  • 命令行工具增强 (curl, tool_formparse, tool_getparam)。
  • 库函数改进 (lib, multi, vtls)。
  • 测试套件更新 (pytest, runtests.pl, tests)。
  • 其他各种错误修复和代码清理。

值得关注的改进:

  • HTTPS RR 支持:
    asyn-ares 和 c-ares 现在支持解析 HTTPS RR,doh 模块也进行了清理和扩展。
  • CMake 构建系统增强:
    CMake 构建系统得到了显著改进,包括新增模块、优化选项检测、改进兼容性等。
  • TLS 会话缓存重构:
    TLS 会话缓存机制进行了重构,提高了效率和安全性。
  • 弃用过时功能:
    一些过时的功能和宏被移除,简化了代码库。

来源:
curl.se/ch/8.12.0.h…

ISPC 1.26.0 发布:改进 ARM 支持、新增通用目标及其他优化

ISPC 是一种 C 编程语言变体的编译器,具有 "单程序,多数据"(SPMD)编程的扩展。

近日,ISPC 1.26.0 版本已正式发布!此版本带来了多项重要改进,包括更好的 ARM 支持、简化内部设计和新目标添加的全新“通用”目标、x86 和 ARM 代码生成的改进以及多个稳定性修复。该版本基于补丁版本的 LLVM 18.1.8。

主要更新亮点:

  • ARM 支持增强:

    • --arch=arm 标志现在映射到 ARMv8(32 位),--arch=aarch64 继续映射到 ARMv8(64 位)。
    • 移除了 ARMv7 架构的 CPU 定义(cortex-a9cortex-a15)。
    • 新增了 cortex-a55cortex-a78cortex-a510cortex-a520 等 CPU 定义,并支持新的 Apple 设备。
    • 引入了新的双泵浦目标:neon-i16x16neon-i8x32
    • 支持使用原生 ARM 指令(sdot/udot)进行点积运算。
    • ARMv8 上的性能平均提升 13%。
  • 通用目标:

    • 引入通用目标以简化 ISPC 目标管理,并作为硬件特定目标的基础。
    • ARM 目标已重构以使用通用目标作为基准,从而实现更简洁的代码和更高的性能。
    • 通用目标可以作为独立目标使用,例如,通过 --target=generic-i1x32 --cpu=penryn 指定。
    • 可通过 ispc --support-matrix 查看所有通用目标及其支持的架构的完整列表。
  • 代码生成优化:

    • 进一步优化了 -O1 优化管线的代码大小,调整了循环展开和函数内联。
    • 改进了 count_leading_zeroscount_trailing_zeros 函数的生成代码,使用原生指令(例如 vplzcntq)。
    • 改进了 AVX512 上 int8/int16 类型的掩码加载/存储的生成代码,使用原生指令(vmovdqu8vmovdqu16)。
    • 改进了从函数返回结构体的代码生成,消除了不必要的 mov 指令。
  • 语言变更:

    • 增强了对 LLVM intrinsics 的支持(使用 --enable-llvm-intrinsics 标志时),包括对无参数 intrinsics 和重载 intrinsics 的支持。
    • 添加了用户可见的宏定义,用于指示 ISPC 基于的 LLVM 版本。
    • __attribute__((deprecated)) 属性现在可以应用于函数,并在调用函数时生成警告。
  • 其他改进和修复:

    • 移除了 KNL (avx512knl-x16) 目标。
    • 添加了 --darwin-version-min 选项,用于指定 macOS 和 iOS 应用程序的最低部署目标版本。
    • 弃用了 --nocpp 命令行标志。
    • 更改了自动调度代码中未检测到受支持的 ISA 时的行为,现在会引发 SIGILL 信号而不是 SIGABRT 信号。
    • 修复了多个 bug,包括函数返回指针时的崩溃、预定义宏的值不正确、使用 sizeof 作为全局变量初始化程序时的崩溃、函数模板重载解析问题、模板内短向量转换的错误行为以及 ldexp 标准库函数中的 零处理错误。

来源:
github.com/ispc/ispc/r…




更多内容请查阅 : blog-250214


关注微信官方公众号 : oh my x

获取开源软件和 x-cmd 最新用法