Whitesmiths C编译器是早期的商用C编译器之一,最初于1978年发布,支持与Unix第6版类似的C语言,且完全独立开发。1985年发布的3.0版本开始支持 emerging ANSI C标准。该编译器可为多种处理器生成代码,如DEC PDP-11、Intel 8080/Z80、8086、Motorola 68000、DEC VAX-11、IBM System/370和System/36,常被用作交叉编译器。公司总裁P.J. Plauger在2021年表示支持将编译器免费用于非商业用途。目前,该编译器的多个版本及其文档、源码和二进制文件已被整理并上传至公共存储库,供下载和使用。
本文介绍了一种针对HTML标记过程中的“命名字符引用状态”的优化数据结构实现。作者在没有参考主流浏览器引擎(如Blink、WebKit、Gecko)的情况下,自行设计了一个数据结构,并发现该实现相比Chrome、Safari和Firefox在效率、数据紧凑性和易用性方面具有优势。作者的方案使用了约60%的Chrome/Firefox数据大小,同时保持了至少相同的处理速度。文章还解释了命名字符引用的特性,它们以“&”开头,包含ASCII字符,区分大小写,通常以“;”结尾,并被转换为一个或两个代码点。由于HTML标准指出命名字符引用列表是固定的,不会再扩展,因此可以优化数据表示。作者最终展示了一种有效的数据结构,并指出仍有进一步优化的潜力。
Ubuntu近期引入了一种新的沙盒机制,旨在通过AppArmor限制非特权命名空间以减少攻击面。尽管初期看似无懈可击,但研究发现该机制存在漏洞,可以被绕过。研究始于内核层分析,发现通过特定方法可以重新获取非特权命名空间的访问权限。尽管最初计划利用该绕过方法参加Pwn2Own 2025,但由于目标变更,Ubuntu被排除在比赛之外。随后,其他研究人员也公开了类似的绕过方法。在通过ZDI报告该问题未果后,直接联系Ubuntu安全团队,确认该问题仅影响特定配置,且已在后续版本中修复。此次合作体验积极,团队反应迅速且友好。
C23引入了一个新规则,允许在不同翻译单元(TU)中定义的具有相同标签的`struct`、`union`和`enum`类型相互兼容。这一变化使得使用宏进行类型参数化成为可能。以前,每个定义在同一TU内的结构体被视为不同的类型,无法直接兼容。 新规则允许在函数内部定义与外部同名的结构体,并且它们现在被视为兼容类型。这为动态数组等数据结构的实现提供了新的可能性。例如,可以使用宏`Slice(T)`定义包含不同类型的切片结构体,而无需提前声明具体类型。 这种技术类似于C++模板,但仅限于类型参数化,不包括函数的参数化。例如,可以定义操作不同元素类型的切片函数,但无法轻松定义通用地图(Map)类型。此外,宏参数必须是标识符,限制了其便利性。 新规则还允许利用C23的其他特性,如`typeof`,以克服某些限制,如内存对齐问题。然而,这种方法也有局限性,不能直接定义包含复杂嵌套类型的结构体。
本文介绍了几种用于排版和文字处理的脚本功能: 1. **Same Sizer**:使每个单词占用相同的水平空间,类似等宽字体效果。 2. **Wiggle Out**:旋转过长单词到页边距,并可调整曲线。 3. **Fill the Space**:填充行末到文本块末尾的空间,使用笔画、重复字母等。 4. **Hyphen Out**:合并连字符单词,将第二部分移到文本框外。 5. **Hyphenator**:通过缩小末尾字母避免单词断开。 6. **Last is First**:预览下一行首词,常见于希伯来手稿。 7. **Ext. Word & Letter**:扩展最后一个字母或单词,常用于圣经抄写。 8. **Variable Gradient**:在文本块中创建渐变效果,可按单词或字形应用。 这些脚本旨在提升排版的美观性和功能性。
新加坡科技设计大学(SUTD)的研究团队通过3D打印技术制造出具有近完美反射性的纳米玻璃结构,颠覆了传统光子学中对低折射率材料的认知。他们开发了一种名为Glass-Nano的光固化树脂,通过双光子光刻技术打印出纳米级精度的结构,并在加热过程中均匀收缩转化为清晰的玻璃。该团队成功制造出具有高度均匀性的钻石型光子晶体,在可见光谱范围内实现了接近100%的反射率,挑战了传统高折射率材料的主导地位。这一突破为玻璃在纳米光子学中的应用开辟了新途径,包括可穿戴光学设备、集成显示器和传感器等领域。研究结果与理论模拟高度吻合,展示了低折射率材料在光学应用中的巨大潜力。
文章主要描述了一个显示项目的进展和遇到的问题。作者成功在显示器上运行了生命游戏和Mandelbrot生成器两个程序,但发现当数据传输速度超过500KHz时会出现随机乱码和内存损坏问题,可能与长排线有关。为减少内存损坏,计算在2MIPS速度下进行,而写入显示器时则切换到较慢的500KIPS。作者还制作了第二套主板,并计划添加更多外围设备如操纵杆接口、声卡和真随机数生成器。 此外,作者提到因工作繁忙和芯片短缺,项目进度有所放缓。Jon改进了模拟器,提升了速度并增加了调试功能。作者个人正致力于64x64 256色显示器,并成功显示了一幅图像,尽管由于线路和面包板问题仍需改进。最后,作者完成了时钟板的修改,除一个需要时钟脉冲同步复位的功能外,其他均测试正常。
Sink 是一个用于在本地网络上的两台 Windows 电脑之间同步目录的工具,无需云存储或外部设备。它能够自动发现网络中运行 Sink 的其他设备,并允许用户选择信任的设备进行连接。Sink 支持近实时同步文件变更,并在处理冲突时保存两份文件副本以防止数据丢失,这些副本存于 `.sink_conflicts` 文件夹中。用户可以通过创建 `.sinkignore` 文件来指定不希望同步的文件或文件夹,该文件的格式类似于 `.gitignore`。当前版本功能较为基础,未来计划增加用户界面、自定义路径、多设备支持等功能。使用时需安装依赖并运行 `main.py`,同步将发生在名为 `sync` 的文件夹中。
实验考古学家、瑞典隆德大学的Greer Jarrett过去三年乘坐着类似维京人的敞篷船,沿已知的维京贸易路线航行了超过5000公里。他通过实践研究,不仅深入了解了这些船只,还发现了挪威沿海的四个可能避风港,这些港口可能属于一个去中心化的网络,在维京时期的贸易和旅行中起到了关键作用。Jarrett使用的是19世纪和20世纪初的挪威传统船只复制品,虽然有同事批评时间跨度太大,但他认为造船技术的延续性使得这种类比是合理的。他的研究填补了维京航行历史中的一些空白,因为关于维京航海的直接史料非常稀少。
本文提议为Web平台添加声明式模板API。尽管DOM API使网页具有动态和表现力,但缺乏现代开发中重要的模板功能。当前没有简便的方法通过数据创建DOM节点、添加事件监听器、设置属性并防止XSS攻击,且高效更新。声明式模板是现代框架(如React、Vue、Angular等)的核心,因其在 ergonomics、安全性、性能、静态分析和服务器端渲染方面具有优势。 目前,Web应用需依赖外部库实现模板功能,导致应用下载时间长、不安全及开发复杂度增加。开发者需使用npm或CDN,增加入门成本。框架需自行实现模板功能,面临性能和尺寸的权衡。 现在添加模板功能的时机很好,历史上曾有类似提案(如E4X、E4H),但未实现。Web平台应适应开发者需求,像国际化、datetime API一样,加入声明式模板API,提升开发体验和应用性能。