事件

CPPCON 2021跳闸报告

大家好,我的名字是Timur Doumler(@timur_audio.在Twitter上),我刚刚加入了JetBrains作为C ++工具的开发人员倡导者,包括Clion IDE。我实际上在过去的软件工程师曾在JetBrains工作过,在Clion的C ++ Parser上工作。除此之外,我在音频和音乐技术行业的各种项目中作为C ++开发人员积极活动(最近,我共同创立了启动摇篮)作为会议发言人,作为ISO C ++标准委员会的积极成员。我很高兴重新加入Jetbrains团队,我期待着在这个新的和令人兴奋的角色中与C ++社区接触!

CPPCON 2021.自过大流行以来是我的第一个亲自会议C ++西伯利亚2020年2月。经过如此长的时间没有任何面对面的会议,这是一个非常令人难忘和有益的经历。由于目前的美国旅行限制,可悲的是,团队的其余部分无法使其成为,所以第一次在年龄段内没有Jetbrains展位。我必须跳过相当多的箍,自己能够前往美国,但它肯定是值得的!

除了大约260名与会者在现场只有约260名与会者,实际会议经验没有受到Covid Pandemic的显着影响。到底,它感觉就像一个很大的大小:它足以成为一个有趣的会议,有四条高质量的现场内容,同时足够小,你可以与那里的每个人交谈(无望的努力,在一个超过1500名与会者的“正常”CPPPCON中)。A few attendees were wearing face masks, and the seats were a bit more spaced out (which I enjoyed because you didn’t have to squeeze past dozens of people in order to find a seat), but other than that it felt very much like a normal C++ conference. After 1.5 years of online-only events, I cannot even begin to describe how great it felt to mingle with real people again!

CPPCON讲座

我应该提到CPPCON 2021是一个与在线组成部分的混合大会(其实际上有更多的发言者和更多的与会者)。但是,由于现场活动非常激烈,我没有机会与在线比特进行搞,所以我不会在这里发表评论。

观看主题演出记录

第一天

会议与Bjarne Stroustrup有关C ++语言的正在进行的演变,随后是杰森特·特纳称为“Consexpr的新心理模型”的一个非常有趣的谈话。杰森认为,我们应该从运行时移动越来越多的代码来编译时间Constexpr.---所有的功能,并给出了代码的示例,即使乍一看似乎是不切实际或不可能的,您也可以成功移动以编译时间。表现不是这里唯一的好处。有趣的是,通过运行你的Constexpr.编译时的代码,消除了未定义的行为:代码在编译器中运行,从而有效地充当C ++解释器。在运行时将导致未定义的行为(例如,访问悬挂参考)的所有内容将被此“解释器”捕获,并作为编译错误而发出。杰森的谈话当他在谈话中透露时,他透露了他所展示的幻灯片演讲本身就是一个二进制Constexpr.- 编译时的C ++代码,并在Commodore 64模拟器内运行。

下午,我参加了大卫石的谈话“实施static_vector”。static_vector是一个类似的矢量容器,其容量在编译时固定,其在对象本身内的堆栈上保持其所有数据。这消除了对动态内存分配的需求,也是非常缓存的,使得这种数据结构非常适用于视频游戏,音频处理和高频交易等低延迟应用。虽然这些数据结构被广泛使用,但令人惊讶地难以正确实施,而无需违反C ++标准的对象寿命规则。这些是这种图书馆设施的常见问题,即使在实现STD :: Vector本身时也会遇到。因此,David的谈话对于在现代C ++中实现通用库的许多开发人员都有用。

第一节结束了传统的C ++委员会炉边聊天小组,今年是Bjarne Stroustrup,Lisa Lippincott,Gabriel Dos Reis,David Stone,Michael Wong和Inbal Levi,Herb Sutter Moverating。要求许多有趣的问题。围绕C ++ 23的正在进行的工作围绕的最有趣的讨论之一,下一个标准,即快速接近其功能冻结日期。与C ++ 20的大范围相比,C ++ 23将是一个较小的错误修正版本,主要针对C ++ 20与标准图书馆支持等标准和模块相比,而不是引入大型新的东西语言功能。小组成员讨论了委员会对委员会进行调整,以便通过电信竞技队的远程工作,而不是一周的面对面会议,以及如何远程工作地妨碍妨碍我们标准化更大的能力,更复杂的功能。作为一个C ++委员会成员,我不能同意该评估。I can’t wait until the committee can meet in person again, although this will happen in July 2022 at the earliest, after the feature freeze date of C++23, meaning that all C++23 features will have been developed entirely remotely.

第二天

星期二的全体会议是由草本嘘声的讲话,提出了他想象的模式匹配被添加到C ++以及它如何适应他更大的愿景,使C ++语言更容易学习和更安全。他提出的模式匹配语法(P2392)使用新的关键字作为。虽然C ++委员会是否会批准此类语法,但现在还为时过早(原始模式匹配提案P1371.不使用它),模式匹配是我看来,目前通过C ++委员会工作的最令人兴奋和最有用的新核心语言功能,草本的解决方案肯定非常优雅,精心设计。即使我们最终与模式匹配的不同语法结束,我仍然强烈推荐观看此谈话:通常会有很多关于语言设计的课程。Plus,Sean Baxter是Circle Compiler的作者(实现草本素的提议)制作了一个窗口,并显示他的C ++前端可以做些什么。

我今天参加的其他会谈包括David Stone的“更快,更简单,更简单的向量”,从他之前的谈话“实施Static_Vector”建造并推广到其他有趣的变种STD ::- 类似数据结构,以及Ben Deane的“可协调的C ++:原则和模式”,与API设计的一些有趣的思想进行了谈话,以及面向对象和功能规划之间的永恒张力。

但今天最具吸引力的部分是所谓的“走廊轨道”,即与会议之间的其他与会者进行临时对话。显而易见的是,在现场的每个人都在如此长时间被困在我们的家中,真正享受混合和社交。我最终有很多关于克隆的谈话,因为我有效地是一位散步的一人码头展位:从现有用户的积极反馈和错误报告,对最新功能的好奇问题,一直到非常具体的问题,如此是否有克隆插件,可让您在调试期间查看图像数据(结果)。

第三天

我星期三开始发表谷歌的陈词滥调,他们进入了勇气Tcmalloc.(谷歌的定制实施Malloc()和c ++的操作员新的为了更快的多线程内存分配),以替换有锁定的多生成器多消费者队列中的一些锁定算法。在多年的情况下,在音频和音乐制作软件上工作,其中锁定的队列是一种无处不在和重要的数据结构,我很奇怪谷歌方法如何解决这些问题。我肯定吸取了一些新的技巧,包括如何测量这种队列的性能以及如何使用工具查找竞争条件。

然而,这一天的亮点是谈话“”推断Ben Deane的“模式”。这是我最喜欢的整个会议的谈判之一(仅通过Daisy Hollman的谈话而超越,见下文),我推荐给计划在它出现C ++ 23后的每个人。“挖掘“是委员会已被批准的C ++ 23批准的新语言功能。它基本上是指定或推导价值类别的语法(无论是偏僻的还是rvalue,Const.,参考,rvalue参考等)和全类型调用成员函数的对象。虽然我已经熟悉“推断”的语法“并且对该功能如何机械地工作(我们对C ++委员会的此功能有很多讨论),我不知道这个功能有多少有趣的新设计模式。我已经意识到的位是我们可以摆脱大量重复的代码,因为我们不必实施不同的口味(Const&&&等)同一成员函数,但我们可以将其作为模板表示。但是,我还了解到CRTP(奇怪的经常性模板模式)现在基本上已经过时,因为“推断出来“使能更容易表达同样的事情。如果这是不够的,我们现在最终可以在C ++中判断递归Lambdas(这是甚至不是困难的)。这是一个伟大的新语言功能的标志:它立即解决了多个看似无关的问题,最后我们不知道我们在没有它的情况下我们都在生活。这个功能的单独应该是足够的理由对C ++ 23非常兴奋!

在晚上,我参加了MLOC(百万行代码)集团社区派对,这是社交,抓住一些饮料的另一个有机会,并与所有将其与CPPCON的每个人一起讨论C ++。

第四天

周四充满了众所周知的C ++发言者,他们都将它送到CPPCON。早上始于Andrei Alexandrescu关于变体类型的演讲,当然是他可行的介绍风格。随后是迈克尔·卡萨斯全体会议,他提醒我们激发并受到启发,并告诉我们他的职业生涯的故事和嵌入式开发商的生活中的一些有趣的瞥见。最后,我看了John Lakos谈论使用noexcept.操作员和说明书安全,推广他的新书“大规模C ++卷我”,并从所有其他扬声器那样快速地拉开了三次的不可能的壮举,同时仍然可以谈论我可以遵循的话,我非常享受。

在会谈结束后,我去了演讲者宴会,这对通常的闪电令人惊叹,其次是一个非常有趣的闪电演讲会话,其中我了解了C ++对象终身规则必须使用Quantum动态,以及如何在C ++中使用Emojis代码,以及其他事情。我也送了一个闪电谈论 - 我的第一个超过两年了!- 我自发地同意在几个小时之前达成并准备好了,显示了一些关于C ++ 20如何使初始化更令人困惑的代码片段。

第五天

在CPPCON 2021的最后一天的早晨,我介绍了我自己的新谈话,“使用C ++标准库进行实时编程”。我概述了标准库的哪些部分在低延迟和实时上下文中可以使用,这更好地避免,因为它们可能会尝试做像分配内存或获取锁定的东西,以及如何在标准上眯起一种方法,允许您弄清楚给定标准实用程序所属的类别。周五谈话的伟大事物是您拥有整个星期,在准备它的同时向专家提供有关材料的问题,以及CPPCON(即使在大流行时期)的伟大事物是许多相关提案作者,标准图书馆实施者,编译工程师就在那里,通常很乐意帮助弄清楚事情!

送自己的谈话,我去看看Walter E.Brown的“正确计算的分钟,最大,以及更多:可能出错?”(结果,很多!我强烈推荐这个谈话)。接下来是我最喜欢的整个会议的谈话:黛西霍尔曼的“你可以从太可爱的东西中学到什么”。她使用创造性和令人惊讶的方式使用现代C ++功能的例子与他们在娱乐中令人着迷,并且通过她的思想吹嘘C ++技巧我学到了很多关于我以前不认识的语言。您是否知道您可以从本地静态初始化程序内部抛出异常,以确保在C ++程序的使用寿命期间仅在C ++程序期间确切地调用了某种函数?不?然后这个谈话适合你。除此之外,Daisy还在C ++ 20特征中发现了一个张大漏洞,即我已经撰写了CTAD,用于聚合类型的CTAD:事实证明,使CTAD与聚合类型的机制在指定的初始化器的存在下完全崩溃,C ++ 20中也采用的聚合初始化的新语法。我现在正在努力报告缺陷。 Thank you, Daisy!

虽然我仍在思考在菊花的谈话中所看到的一切,但我去听杰夫卡兰,在目前在C ++ 23中包含目前的标准库功能,提供了非常有用的概述。然后是Sean父​​母关闭主题演讲已经是时间。除了我确实知道,我不会破坏太多的那个STD :: MOVE.没有移动,和std ::删除不删除,但我完全没有准备好的启示STD ::查找找不到。

CPPCON室

最后,到目前为止,CPPCON 2021是我职业生涯中最愉快和最难忘的C ++会议经历之一。我想祝贺组织者,并给他们一个粗心谢谢他们的所有工作。反对所有赔率,尽管全球大流行和国际旅行禁令,但他们已经震惊了惊人的东西。

希望,明年,Jetbrains团队将全力以赴地回到CPPCON!

观看主题演出记录

Baidu