编译器

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)