Safari Technology Preview 254 发布说明

Safari Technology Preview 254 发布说明

💡 原文英文,约4000词,阅读约需15分钟。
📝

内容提要

Safari Technology Preview 254 发布,包含多项 WebKit 更新:CSS 新增 size、interpolate-size、calc-size() 等属性,修复网格与 line-clamp 问题;JavaScript、媒体、WebGPU、WebRTC 修复大量缺陷;辅助功能、网络、SVG、WebDriver 及 WebAssembly 亦有改进。

🔎

延伸解读

CSS 新特性:尺寸与动画的增强

本次更新为 CSS 引入了多个与尺寸和动画相关的新特性。size、min-size 和 max-size 简写属性让尺寸设置更简洁;interpolate-size 属性支持在 auto、min-content 等内在尺寸关键字之间进行动画过渡;calc-size() 函数则允许对内在尺寸进行计算。这些特性共同提升了布局和动画的灵活性,开发者可以更精细地控制元素尺寸变化。

大量 CSS 网格与 line-clamp 问题修复

本次发布修复了众多 CSS 网格布局和 line-clamp 的缺陷。网格方面,解决了轨道尺寸计算、项目跨轨道分布额外空间、以及重绘缺失等问题,并优化了具有不同 order 值的网格项导致的二次方重排成本。line-clamp 方面,修复了与 -webkit-line-clamp 的级联、嵌套块计数、浮动和绝对定位元素支持等,使其行为更符合规范。

JavaScript 与 Web API 的稳定性改进

JavaScript 引擎修复了多个边界情况,包括 BigInt 解析、正则表达式后行断言中的命名反向引用、跨 realm 的 Promise 和 RegExp 方法调用等。Web API 方面,修复了 IndexedDB 事务死锁、页面生命周期事件在跨站导航中失效、以及 Blob 读取的内存增长问题。这些修复提升了代码的可靠性和内存效率。

媒体与 WebGPU 的缺陷修复

媒体部分新增了 WebCodecs 中 transfer 选项和 HEVC 编码支持,并修复了视频播放、颜色空间处理、解码器错误报告等问题。WebGPU 修复了 copyExternalImageToTexture 的透明度保留、异步管线创建永不结算、以及渲染管线缓存未命中等缺陷。这些改进增强了媒体处理和图形渲染的稳定性与性能。

❓

Q&A

Safari Technology Preview 254 在 CSS 方面新增了哪些功能?

新增了 size、min-size、max-size 简写属性;border-*-radius 侧边简写(如 border-top-radius);interpolate-size 属性,允许动画和过渡到/从 auto、min-content、fit-content 等内在尺寸关键字;symbols() 函数用于定义匿名计数器样式;CSS 链接参数(link-parameters 属性和 param())用于向链接的 SVG 图像传递值;calc-size() 函数,允许对 auto、fit-content、max-content 等内在尺寸进行计算。

Safari Technology Preview 254 修复了哪些与 line-clamp 相关的问题?

修复了 line-clamp 和 -webkit-line-clamp 共享底层值并正确级联,-webkit-line-clamp 现在视为简写;修复了 line-clamp、max-lines 和 block-ellipsis 以匹配最新规范语法;修复了 line-clamp 在换行时为块省略号腾出空间;修复了当块省略号替换了被钳制行上的所有内容时只保留省略号;修复了 line-clamp 在内容全部适合行限制时仍添加块省略号;修复了 line-clamp 将嵌套块的行数计入最大行数;修复了 line-clamp 在块省略号前移除悬挂尾随空白;修复了 line-clamp 在浮动和绝对定位盒子上被忽略;修复了 line-clamp 容器内 ruby 注释丢失文本;修复了 line-clamp 在多列容器上错误钳制行;修复了改变 line-clamp 容器宽度时显示超出钳制点的行;修复了 line-clamp: auto 在容器块大小处钳制。

Safari Technology Preview 254 在 JavaScript 方面修复了哪些问题?

修复了 BigInt("-") 和 BigInt("0x ") 抛出 SyntaxError;修复了优化代码在导入循环后可能读取模块变量的陈旧值;修复了展开或应用严格模式 arguments 对象时将其长度截断为 32 位;修复了堆栈跟踪捕获从 Error 构造函数读取 Error.stackTraceLimit;修复了正则表达式后行断言中的命名反向引用(\k<name>)在某些情况下错误匹配空字符串;修复了 RegExp.prototype.test() 对某些锚定正则表达式跳过 lastIndex 的可观察读取;修复了 ArrayBuffer.prototype.slice() 正确查找构造函数的 Symbol.species;修复了 Intl.DateTimeFormat.prototype.resolvedOptions() 报告未请求的 dayPeriod 值;修复了 Intl.Segmenter containing() 在代理对边界前返回包含前一段的段;修复了 Intl.DurationFormat 丢弃数字单位后的零分钟和秒;修复了 Promise 方法在跨领域时创建错误领域的 promise 和错误;修复了 (a?.b)(x) 在 a 为 null 或 undefined 时跳过调用并返回 undefined;修复了 Intl.DurationFormat 丢弃折叠到零单位的小数值;修复了 Intl.DurationFormat 丢弃 -1 到 0 之间小数值的负号;修复了 String.prototype 和 RegExp.prototype 方法在跨领域时使用调用者领域运行;修复了带括号可选链作为标签的标记模板保持正确的 this 值;修复了使用 super 属性作为标签的标记模板以当前 this 值调用标签函数;修复了 TypedArray 构造函数在传入包装类数组对象的 Proxy 时创建空数组;修复了 ArrayBuffer 构造函数在读取 newTarget 原型前对无效长度抛出 RangeError;修复了 Array 构造函数在抛出 RangeError 前读取 newTarget 原型。

Safari Technology Preview 254 在媒体方面有哪些新功能和修复?

新功能:WebCodecs 的 EncodedAudioChunk、EncodedVideoChunk、AudioData、VideoFrame 和 ImageDecoder 构造函数支持 transfer 选项,允许转移 ArrayBuffer 数据的所有权而不是复制;VideoEncoder 配置支持 hevc 选项,使 WebCodecs 能生成 Annex B 格式的 HEVC 视频。修复:隐藏页面中带音频的暂停媒体无法在没有用户手势的情况下重新开始播放;从画中画返回元素全屏再退出到内联时视频消失但音频继续;通过 JavaScript 设置模式的文本轨道可能被自动字幕选择覆盖;媒体范围响应可能丢弃请求范围的最后一个字节;镜像 VideoFrame 在应用旋转时垂直翻转而不是水平翻转;混合清晰和加密媒体的 Media Source Extensions 内容在解密密钥已可用时 play() promise 永不解析且 playing 事件永不触发;WebCodecs VideoEncoder 和 VideoDecoder 在底层编解码器缓冲超过四帧时 flush() 挂起;软件解码的 8 位 4:2:2 VP9 视频颜色错误(色度通道交换导致色偏);软件 VP9 解码器报告解码错误而不是静默丢弃 4:4:4 帧或产生损坏的 12 位帧。

Safari Technology Preview 254 在 WebGPU 方面修复了哪些问题?

修复了 copyExternalImageToTexture() 保留 alpha 值而不是传递有损的预乘数据,避免某些带透明度的纹理渲染错误;修复了 createComputePipelineAsync() 和 createRenderPipelineAsync() 在设备丢失或销毁时永不 settle;修复了在某些 Apple 芯片 GPU 上片段着色器在循环前 discard 时向渲染目标写入 NaN 值;修复了 WebGPU 内容在几帧缓慢后永久降至显示刷新率的一小部分;修复了从已使用的 GPUShaderModule 创建的渲染管线总是错过着色器缓存,导致重复创建管线像冷编译一样慢;修复了使用 executeBundles() 重用渲染捆绑包时在第一次执行后丢失绑定组动态偏移;修复了渲染通道编码器上的 setBindGroup() 执行冗余采样器注册工作。

Safari Technology Preview 254 在 WebRTC 方面修复了哪些问题?

修复了通过 WebRTC 和 WebCodecs 编码或解码的 H.265 视频总是被标记为 BT.709 有限范围而不是保留其实际色彩空间;修复了 WebRTC 和 WebCodecs 中 H.264 视频的全范围颜色处理,通过使用 WebKit 自己的 VideoToolbox 解码器解码;修复了 H.264 视频编码和解码保留视频色彩空间,并修复了来自 canvas 的帧在编码时使用 sRGB 色彩空间。

🏷️

标签

➡️

继续阅读