ACM Queue - Programming Languages
http://queue.acm.org/listing.cfm?item_topic=Programming Languages&qc_type=topics_list&filter=Programming Languages&page_title=Programming Languages&order=desc
Catch-23: The New C Standard Sets the World on Fire
http://queue.acm.org/detail.cfm?id=3588242
Programming Languages2023年3月29日 15:44:10 GMTTerence Kelly, Yekai Pan3588242The Elephant in the Room: It's time to get the POSIX elephant off our necks.
http://queue.acm.org/detail.cfm?id=3570921
Programming Languages2022年12月07日 10:33:44 GMTGeorge V. Neville-Neil3570921ACID: My Personal: How could I miss such a simple thing?
http://queue.acm.org/detail.cfm?id=3469647
Programming Languages2021年6月03日 14:13:28 GMTPat Helland3469647Optimizations in C++ Compilers: A practical journey
http://queue.acm.org/detail.cfm?id=3372264
There's a tradeoff to be made in giving the compiler more information: it can make compilation slower. Technologies such as link time optimization can give you the best of both worlds. Optimizations in compilers continue to improve, and upcoming improvements in indirect calls and virtual function dispatch might soon lead to even faster polymorphism.Programming Languages2019年11月12日 15:18:04 GMTMatt Godbolt3372264Garbage Collection as a Joint Venture: A collaborative approach to reclaiming memory in heterogeneous software systems
http://queue.acm.org/detail.cfm?id=3325132
Cross-component tracing is a way to solve the problem of reference cycles across component boundaries. This problem appears as soon as components can form arbitrary object graphs with nontrivial ownership across API boundaries. An incremental version of CCT is implemented in V8 and Blink, enabling effective and efficient reclamation of memory in a safe manner.Programming Languages2019年4月09日 15:33:59 GMTUlan Degenbaev, Michael Lippautz, Hannes Payer3325132C Is Not a Low-level Language: Your computer is not a fast PDP-11.
http://queue.acm.org/detail.cfm?id=3212479
In the wake of the recent Meltdown and Spectre vulnerabilities, it's worth spending some time looking at root causes. Both of these vulnerabilities involved processors speculatively executing instructions past some kind of access check and allowing the attacker to observe the results via a side channel. The features that led to these vulnerabilities, along with several others, were added to let C programmers continue to believe they were programming in a low-level language, when this hasn't been the case for decades.Programming Languages2018年4月30日 15:18:18 GMTDavid Chisnall3212479Thou Shalt Not Depend on Me: A look at JavaScript libraries in the wild
http://queue.acm.org/detail.cfm?id=3205288
Most websites use JavaScript libraries, and many of them are known to be vulnerable. Understanding the scope of the problem, and the many unexpected ways that libraries are included, are only the first steps toward improving the situation. The goal here is that the information included in this article will help inform better tooling, development practices, and educational efforts for the community.Programming Languages2018年4月04日 12:55:55 GMTTobias Lauinger, Abdelberi Chaabane, Christo Wilson3205288Uninitialized Reads: Understanding the proposed revisions to the C language
http://queue.acm.org/detail.cfm?id=3041020
Most developers understand that reading uninitialized variables in C is a defect, but some do it anyway. What happens when you read uninitialized objects is unsettled in the current version of the C standard (C11).3 Various proposals have been made to resolve these issues in the planned C2X revision of the standard. Consequently, this is a good time to understand existing behaviors as well as proposed revisions to the standard to influence the evolution of the C language. Given that the behavior of uninitialized reads is unsettled in C11, prudence dictates eliminating uninitialized reads from your code.Programming Languages2017年1月16日 17:07:44 GMTRobert C. Seacord3041020Why Logical Clocks are Easy: Sometimes all you need is the right language.
http://queue.acm.org/detail.cfm?id=2917756
Any computing system can be described as executing sequences of actions, with an action being any relevant change in the state of the system. For example, reading a file to memory, modifying the contents of the file in memory, or writing the new contents to the file are relevant actions for a text editor. In a distributed system, actions execute in multiple locations; in this context, actions are often called events. Examples of events in distributed systems include sending or receiving messages, or changing some state in a node. Not all events are related, but some events can cause and influence how other, later events occur. For example, a reply to a received mail message is influenced by that message, and maybe by prior messages received.Programming Languages2016年4月12日 20:37:21 GMTCarlos Baquero, Nuno Preguiça2917756Spicing Up Dart with Side Effects: A set of extensions to the Dart programming language, designed to support asynchrony and generator functions
http://queue.acm.org/detail.cfm?id=2747873
The Dart programming language has recently incorporated a set of extensions designed to support asynchrony and generator functions. Because Dart is a language for Web programming, latency is an important concern. To avoid blocking, developers must make methods asynchronous when computing their results requires nontrivial time. Generator functions ease the task of computing iterable sequences.Programming Languages2015年3月19日 15:43:01 GMTErik Meijer, Kevin Millikin, Gilad Bracha2747873