JF Bastien

systems & compiler enthusiast

šŸ¦ @jfbastien

šŸ˜ @jfbastien@mastodon.social

About Me

I'm a low-level systems and compiler engineer with a track record of delivering high-impact and novel code to my employers, both as an individual contributor and technical leader.

I enjoy efficient code, measurably improving security, data-mining, crafting nifty visualizations, working on and speaking about open-source software, bootstrapping skilled teams, mentoring, and improving my field through cross-company standardization efforts. To this end, Iā€™m an active participant in the C++ Standards Committees where I chair the language evolution working group, and former chair of the WebAssembly community group.

Work Experience

Woven by Toyota

Distinguished Engineer

2023-10/present

Chief architect

2020-08/2023-10

Enabling "mobility for all": create the most programmable vehicle without compromising safety.

Apple

Compiler engineer

2016-08/2020-08

Security through compiler technology.

  • C++ lead and compiler engineer on the LLVM team: substantially increased the security of iOS and macOS through compiler technologies which I designed, implemented, and lead a team to deploy strategically to high-value attack targets. Founder of the LLVM Security Group.
  • Compiler engineer on WebKit's JavaScriptCore: implement WebAssembly, performance tune WebAssembly and JavaScript, Spectre mitigations.

Google

Compiler engineer

2012-08/2016-08

Bring portable, fast and secure native code to the Web.

NVIDIA

Compiler engineer

2009-08/2012-08

Dynamic binary translation from ARMv8 to VLIW on the Denver CPU.

  • A32, T32, and A64 decode and optimization.
  • Supervisor runtime.
  • High performance in-memory column-oriented database / programming language, used to instrument and analyze hardware and software simulations.

CAE

Systems engineer

2006-05/2009-08

Reduce aircraft simulation development effort an order of magnitude.

  • Design and implement a ā€œmodernā€ C++03 runtime.
  • C++ reflection framework.
  • Binary / source compatibility validator.
  • Avionics systems engineering using the above-mentioned runtime.
  • Maintain older Fortran / C code.

Bombardier

Engineer intern

2004/2005

Mechanical engineering design on the Global Express business jet.

Education

Stanford

Masterā€™s degree

Computer science

2010/2015

Part-time graduate studies in computer sciences, focusing on compilers, systems and hardware.

I completed ā…” of a degree, which rounds toward āˆ’āˆž.

McGill

Bachelorā€™s degree

Mechanical eng.

2002/2006

  • Lead teaching assistant, 7 semesters, for Computers in Engineeringā€”Fortran, C, and Algorithms.
  • Thesis: Rapid Decompression Simulation in an Aircraft and Related Hardware Optimization, used to automatically optimize aircraft design while meeting FAA/JAA regulations; Bombardier Aerospace.
  • Final project: Aircraft Assembly Optimization; Bombardier Aerospace.

Selected Publications & Public Speaking

PLDI

2017

ASPLOS

2017

TACAS

2018

C++ Committee

  • p2809 Trivial infinite loops are not Undefined Behavior
  • p1152 Deprecating volatile
  • p0907 Signed Integers are Two's Complement
  • p1860 C++ Networking Must Be Secure By Default
  • n4455 No Sane Compiler Would Optimize Atomics
  • p0323 std::expected
  • p2723 Zero-initialize objects of automatic storage duration
  • p1225 Feedback on 2D Graphics
  • p1482 Modules feedback
  • p1746 Feedback on std::audio
  • p0476 Bit-casting object representations
  • p1382 volatile load and volatile store
  • p0750 Consume
  • p0690 Tearable Atomics
  • p0995 Improving atomic_flag
  • p1135 The C++20 synchronization library
  • n4509 constexpr atomic::is_always_lock_free
  • p0502 Throwing out of a parallel algorithm terminates
  • p0154 Hardware constructive/destructive interference size
  • p1119 ABI for interference size
  • p0528 Padding bits, atomic compare-and-exchange
  • p1205 Teleportation via co_await
  • p0193 Where is Vectorization in C++ā€½
  • p0394 Hotel Parallelifornia
  • p0020 Floating Point Atomic
  • p0153 Atomic object fence
  • p0097 Use Cases for Thread-Local Storage
  • p0566 Hazard pointer, RCU
  • p0418 Fail or succeed: there is no atomic lattice
  • p1102 Down with ()!
  • p1110 A placeholder with no name
  • p1153 Copying volatile subobjects is not trivial
  • p1245 export module containing [[attribute]];
  • p1246 The no_float function attribute
  • p1247 Disabling static destructors
  • p2186 Removing Garbage Collection Support

WWDC

2019

LLVM

2019

LLVM

2018

LLVM

2018

Migrating to C++14, and beyond!.

LLVM

2015

WebAssembly: Here Be Dragons.

Conference keynote.

EuroLLVM

2015

EuroLLVM

2014

C++Now

2023

C++Now

2023

C++onSea

2023

*(char*)0 = 0;.

250k views! 7th most viewed C++ conference talk ever!

C++Online

2024

The bytes before the types: unveiling uninitialized uses(upcoming).

Conference keynote.

CppCon

2020

CppCon

2019

CppCon

2018

CppCon

2016

CppCast

2018

CppCast

2015

Tokyo University

2023

SAE

2021

Tokyo C++

TLB hit šŸ’„