Loading…
CppCon 2019 has ended
• Free Standing/Web/Runtimes [clear filter]
Monday, September 16
 

14:00 MDT

Freestanding C++ - Past, Present, and Future
C++ is used in a wide variety of platforms and environments, some of which don't provide all of the features described in the C++ Standard. For example, C++ features that require operating system support may be unavailable in low-end embedded systems, or when implementing an operating system itself. To help programmers write highly portable code, the C++ Standard drew a line between the “freestanding” features that should be available everywhere and the “hosted” features that might not. But the line has always been blurry. As C++ continues to develop, more and more developers are asking where and how that line should be drawn.

This session explores the state of freestanding C++. It discusses the history behind freestanding C++, examines how it’s actually used (and not used), and looks at where it might be going in the future.

Speakers
avatar for Ben Saks

Ben Saks

Chief Engineer, Saks & Associates
Ben Saks is the chief engineer of Saks & Associates, which offers training and consulting in C and C++ and their use in developing embedded systems. Ben has represented Saks & Associates on the ISO C++ Standards committee as well as two of the committee’s study groups: SG14 (low-latency... Read More →


Monday September 16, 2019 14:00 - 15:00 MDT
Crest 3
  • Free Standing/Web/Runtimes

15:15 MDT

Using Freestanding C++ to add C++17 to your Shellcode, UEFI, Embedded Systems and Unikernels.
This presentation is a must-see if you would like to learn how C++ works under the hood or how to include the Standard Library when compiling with "-ffreestanding". In this presentation, we will examine how C++ works behind the scenes as well as how to include C++ and the Standard Library in freestanding environments. Such environments include shellcode, UEFI, embedded systems (with no OS available), and unikernels. There are many environments where an OS is not present, or the facilities of the OS are inaccessible (for example with shellcode). In these environments, one compiles C/C++ with "-ffreestanding" to produce an executable with no external dependencies. The downside to this approach is the Standard Library is also not accessible, meaning useful functions such as std::unique_ptr, std::mutex, and std::list are not available. Furthermore, some core language facilities such as std::move, std::forward, and dynamic_cast are also unavailable as the Standard Library implements these.

This presentation teaches the audience how to overcome these problems by leveraging Libc++ from LLVM and Newlib to create a working, freestanding C++ environment with support for the Standard Library. Topics presented include how to compile a static, position independent executable (also called a static PIE) with support for C++ and the Standard Library, how to execute your project in a freestanding environment and what the limitations are and how to overcome them. Finally, this presentation will conclude with a demonstration of a UEFI application written in C++ as well as a demonstration of leveraging C++ in shellcode.

Speakers
avatar for Rian Quinn

Rian Quinn

CTO, Assured Information Security, Inc.
Dr. Rian Quinn is a Senior Principal Investigator in the Trusted Information Systems Group at Assured Information Security, Inc. were he has focused on trusted computing and hypervisor related technologies for nearly 10 years. He holds a Ph.D. in Computer Engineering with specializations... Read More →


Monday September 16, 2019 15:15 - 16:15 MDT
Crest 3
 
Wednesday, September 18
 

10:30 MDT

Applied WebAssembly: Compiling and Running C++ in Your Web Browser
WebAssembly is a new technology in all modern browsers designed to let you run high-performance code. Maybe you've heard of WebAssembly before, read an article or two, or even tried to use it with your software project. Since WebAssembly is a low-level language, it's easy to get bogged down in the technical details, and leave without knowing whether WebAssembly will be useful for you. In this talk, I'll take a top-down approach, showing a real problem and how WebAssembly can help.

From August to December this year, I'll be teaching C++ to students at Morehouse College. Having a tool like Compiler Explorer is invaluable as a teaching aid, since it allows the students to immediately see C++ compilation results, on any device that has a web browser. But Compiler Explorer and tools like it require a server to do compilation, so they're hard to use offline. With WebAssembly, we can run the compiler client-side, in the browser, no server required.

First, I'll show how I ported the clang compiler and linker to WebAssembly. Since Clang 8 supports WebAssembly as a compilation target, we can even run the resulting executable sandboxed in the browser. Next, we'll dive into how Clang compiles C++ constructs into WebAssembly. Finally, we'll look at some of the new WebAssembly features in development.

Speakers
avatar for Ben Smith

Ben Smith

Software Engineer, Google
Ben Smith is a Software Engineer at Google, on the WebAssembly team. His primary work involves adding new features to V8, Chrome's JavaScript and WebAssembly engine. He's also the chair of the WebAssembly Community and Working Groups, where he helps move new features forward. From... Read More →


Wednesday September 18, 2019 10:30 - 12:00 MDT
Aurora A
  • Free Standing/Web/Runtimes
 
Thursday, September 19
 

15:50 MDT

The Design of the C++ Runtime for AWS Lambda
AWS Lambda allows developers to write their code and run it without worrying about provisioning machines and/or scaling them. AWS Lambda's billing model is based on how much memory your code consumes and how fast it completes. That makes C++ an ideal candidate for AWS Lambda.

However, C++ programs are compiled with many different compilers and linked against different versions the standard library. This poses a challenge for deployment when the target environment is not something under your control. It can also be too restrictive to require users to build their programs from scratch in that environment and that environment only.

In this talk, I will walk you through the problems we faced and the techniques we used to solve them in order to make running C++ on AWS Lambda a reality.

Speakers
MM

Marco Magdy

Senior Software Engineer, Amazon
Marco is a senior software engineer at AWS who works full time on developing & maintaining the C++ SDK for AWS. He is also the author of the C++ runtime for AWS Lambda.


Thursday September 19, 2019 15:50 - 16:20 MDT
Crest 4/5
  • Free Standing/Web/Runtimes
 
Friday, September 20
 

14:45 MDT

Embrace Modern Technology: Using HTML 5 for GUI in C++
HTML 5 is likely the most widely used development stack in history. Because of this, there is an abundance of development tools and resources, and, more importantly, experts. HTML 5 is all about multimedia presentation. It's designed to allow any look and feel with ease. Modern browsers are among the most sophisticated pieces of software ever produced. It's hard to compete with what they achieve in terms of performance, security and stability.

HTML 5 is for web pages...

... or is it?

This talk introduces using HTML 5 as a graphical user interface framework for C++ native applications. In it we will explore several approaches and discuss their pros and cons. We will present several examples and demos which can help you start working on your own HTML 5 GUI right away.

Speakers
avatar for Borislav Stanimirov

Borislav Stanimirov

Staff Software Engineer, ViewRay
Borislav has been a C++ programmer for more than 17 years. The majority of his career has been in video games and in the past two years he's been working on software for medical devices. He has worked on C++ software for all kinds of platforms: desktops, mobile devices, servers, and... Read More →


Friday September 20, 2019 14:45 - 15:45 MDT
Summit 4/5
  • Free Standing/Web/Runtimes
  • Level Intermediate, Advanced
  • Tags GUI, HTML

20:30 MDT

Using HTML 5 for GUI in C++ Addendum
This session is for people interested in more after the talk Embrace Modern Technology: Using HTML 5 for GUI in C++. In it Borislav will help people run the demos from the talk on their own computers, answer more questions, and discuss ideas or concerns people might have if they want to use HTML 5 for GUI in their own C++ applications.

Speakers
avatar for Borislav Stanimirov

Borislav Stanimirov

Staff Software Engineer, ViewRay
Borislav has been a C++ programmer for more than 17 years. The majority of his career has been in video games and in the past two years he's been working on software for medical devices. He has worked on C++ software for all kinds of platforms: desktops, mobile devices, servers, and... Read More →


Friday September 20, 2019 20:30 - 21:15 MDT
Crest 3
 


Twitter Feed

Filter sessions
Apply filters to sessions.