微软向开源又迈进了一大步:Checked C

导读 微软开源了 Checked C ,这是一个 C 语言的扩展版本,可以用于解决 C 语言中的一系列安全相关的隐患。正如其名字所示,Checked C 为 C 语言增加了检查,这个检查可以帮助开发者检查常见的编程错误,比如缓存区侵占buffer overruns、内存访问越界、不正确的类型转换等。这些编程错误往往是造成许多重大安全漏洞的根本原因,比如破壳漏洞Shellshock、心脏出血漏洞Heartbleed、沙虫Sandworm等。

Checked C 通过修改控制指针来解决这些问题,指针被程序员们用来定义他们的代码所操作的内存地址。当指针数量一多,指针控制就往往容易忙中出乱,项目越大跟踪它们就越困难,类似 Chromium、Firefox、Office、OpenSSL 以及其它的大型代码库在这方面都存在这样的问题,你可以从它们的变更日志中看到大量的这类问题修复。“Checked C 允许程序员更好的描述他们想要如何使用指针,以及指针应该指向的内存范围”,微软说,“这个信息可以用于在运行时环境中添加检测,以侦测错误的数据访问,而不是让错误悄悄的发生而无所察觉。”

Checked C 也将允许开发者检测到他们以为 C 语言有、而实际却没有的功能误用。按编程界的说法来讲,这个叫做“边界检查bounds checking”的功能,用于检查变量/指针是否在它的范围之内赋值,C# 和 Rust 已经有这样的功能了,而且还不止于此。然而不幸的是,被广泛使用的 C 和 C++ 却没有这样的功能,微软希望只需要对现有的 C/C++ 程序做最小的改动,利用 Checked C 就可以得到安全方面的改善,这样会吸引大量的开发者开始使用 Checked C。

Checked C 项目已经放到了 GitHub 上。这并不是微软第一次对基本编程语言做出来自己的演绎,之前该公司的程序员们还创建了一个名为 TypeScript 的 JavaScript 的超集,并且它已经得到了广泛认可。

时间: 2024-08-24 06:45:09

微软向开源又迈进了一大步:Checked C的相关文章

我对微软.NET开源的理解

我对微软.NET开源的理解 上周,微软宣布.NET开源,并把它扩展到Linux和Mac OS平台上面. 届时,微软已经宣布开源的数个开发技术,有ASP.NET Roslyn.NET编译器平台..NET微框架..NET Rx以及VB和C#程序语言. 那么,.NET开源的原因和目的何在呢?究竟是被其他开源社区攻占市场的无奈之举,还是突然看好开源,顺应潮流呢? .NET开源让其只能在Windows系统上运行的不足消失了,它可以在更多更广的平台上发挥它的作用,无疑拓宽了微软的市场,让更多的Web服务器.

java不可能转化成exe的理由——微软如果开源

我只是作一个猜想,理由如下: 我们知道,我们所使用的高级语言,所写成的程序,需要经过一步步的编译,最终得到二进制码文件,放到操作系统上执行.然而不同的操作系统,会有不同的原语.jvm可以跨平台,是因为不同的操作系统上有不同的jvm,并且所需要的源代码,却是相同的. 我们都知道,运行在jvm上的是.java编译过来的.class文件.要想转化成.exe的可执行文件,按照我们的常理来推测,或许从.class文件开始往.exe转化.或许直接从.java开始转化不是更好吗?那么得有一个专门解释.java

微软成立开源子公司 红帽谨慎乐观

关于Linux的学习,请参考书籍<Linux就该这么学> 微软是在上周作出将成立一个开源技术子公司声明,据悉新的公司将由微软高管 Jean Paoli 担任公司总裁,公司会在发展中逐步推进和成立互通性战略团队.新成立的公司希望推动开源社区的建设和标准的制订,同时也借此桥接微软和非微软的技术.对此,红帽公司今天发布一篇谨慎而乐观的声明作出回应:首先,我们对微软在上周宣布成立微软开放技术全资子公司,以推动开源互通性.开放标准以及开源社区的举动表示欢迎. 1. 消费者和开发者将是开源最大赢家开源以及

微软与开源干货对比篇_PHP和 ASP.NET在 Session实现和管理机制上差异

微软与开源干货对比篇_PHP和 ASP.NET在 Session实现和管理机制上差异 前言:由于开发人员要靠工具吃饭,可能和开发工具.语言.环境呆的时间比和老婆孩子亲人在一起的时间还多,所以每个人或多或少对自己吃饭的工具在感性上带有宗教情结,在理性上又受屁股决定大脑利益左右,这种比较一般都容易遭人争议, 这些比较不带任何偏见和感情色彩,主要是自己工作中记录在有道云笔记的经验日记主要是给I自己学习备查用,写得多了就有参考价值分享出来给需要的人参考,如果有任何争议本人不作辩解.这只代表本人自己的理解

喜大本\\ u0026普,微软的开源

词汇表--喜大本\\ u0026普:爱过.有趣的游戏,庆祝.奔走相告.简而言之<reload=1">微软宣布.NET开发环境开源>是个好消息. 前言及历史回想 就我个人来说.这十来年都对微软没什么好感,折腾.net的经验也已经是至少12年前的事情了.距离上一次吐槽.net也已经过去快十年(2005年)了,之后根本都懒得谈它,可是这一次不同,开源终归是一件好事--尽管基本也是与我无关. 但既然開始了这篇扯淡.总还是要扯下去的,谈点个人看法. simp主席说得是,微软来晚了,如今就

微软宣布开源.NET框架 支持Linux与Mac OS X

11月13日消息,微软周三宣布了.NET开发框架开源计划,让.NET应用未来可以在Linux上和Mac OS X上运行. 据报道,微软表示,在未来几个月内,还将开放.任你博NET核心Runtime和.NET核心框架的其余部分. 根据微软的计划,下一次发布.NET开发框架时,整个服务器开发环境,从ASP.NET 5下至Common Language Runtime和Base Class Libraries,都将实现开源. 微软还推出了拥有全功能的Visual Studio 2013社交版,可免费用

微软Microsoft开源历程与相关资源

2001 Open source is bad for business, saysMicrosoft Linux is a cancer 2005 Enterprise Library 1.0 released! 2006 AJAXControlToolkitreleased 2007 MicrosoftWill Support ODF If It Doesn't 'Restrict Choice AmongFormats' 2009 Microsoft ASP.NET MVC 1.0 is

微软 改变 开源【几个站点】

codeplex切换到目前的主流开源中心https://github.com/microsoft 几个核心技术的站点https://github.com/Microsoft/dotnethttps://github.com/aspnethttps://github.com/microsoft/vscode 基础站点https://opensource.microsoft.com/https://open.microsoft.com/ 本地化翻译https://www.transifex.com/

阿里云和微软共同开源的 OAM 对 Kubernetes 开发人员意味着什么?

上周,微软和阿里巴巴共同推出了开放应用模型(OAM),用于定义部署在任何地方的应用模型的一种规范.Rudr是Microsoft基于Kubernetes环境的OAM标准实现. 我用了一个周末来了解OAM试图解决的问题,为此我还以Rudr为基础重构了一些我喜欢的基础微服务的应用程序.本文和以下教程将帮助普通的Kubernetes用户了解OAM背后的动机. 众所周知,Kubernetes是一个复杂的平台,包含许多活动组件.在编排和部署简单的两层Web应用程序时,需要涉及到创建Storage Class