编译器
GCC
GCC 7.3.0 包括了 C、C++、Fortran 的前端,也包括了这些语言的库(如libstdc++、libgcc等),openEuler 1.0 Base 配套编译器为 GCC 7.3.0,并在此基础上进行了特性增强和漏洞修复,其主要更新如下:
特性增强
- 针对鲲鹏920的 TaishanV110 核,支持该TaiShan核微架构下的流水线优化
- 支持 AArch64 后端下的长跳转(Long Call)功能
- 支持循环优化 loop unroll and jam,将多层循环中的外层循环展开,并将展开后的多个内层循环合并
- 支持循环优化 loop interchange,将多层循环中的内外层循环进行交换
安全漏洞修复
- 修复ARM后端下栈保护功能在特殊场景中能够被黑客绕过保护的安全漏洞(CVE-2018-12886)
- 修复POWER9后端下多次调用__builtin_darn函数的返回值相同的安全漏洞(CVE-2019-15847)
OpenJDK
JDK(Java Development Kit)是 Java 开发者进行 Java 开发所必须的软件包,包含 JRE(Java Runtime Environment)和编译、调测工具。openEuler 1.0 Base 配套 JDK 为 OpenJDK 8, 并在此基础上进行了 GC 优化、并发稳定性增强、安全性增强等,提高了 Java 应用程序在 ARM 上的性能和稳定性,其主要特性和更新如下:
特性
- 兼容Java SE 8 & JDK 8
特性增强
- 删除 GC 中冗余的 read/write barrier
- 针对 ARM 弱内存模型进行了稳定性增强
问题修复
- 在ARM v8.1上默认禁用UseLSE选项
- 避免了因为没有提前加载ClassLoader.findLibrary和System.loadLibrary而导致的潜在的死锁问题 (JDK-8231584)
- 解决了一个容易遇到的javac检查超类时无限递归的bug(JDK-8214345)
- 修复了在heapdump时可能遇到的crash问题(JDK-8194246)
- 修复了getCanonicalPath在处理”//“时遇到的crash问题(JDK-8194154)
- 修复了一个AbstractQueuedSynchronizer可能存在的锁竞争问题(JDK-8191483)
- 修复创建一个NTLM连接抛空指针异常的问题(JDK-8151788)
- DateTimeFormatter支持”yyyyMMddHHmmssSSS”日期格式解析(JDK-8031085)