JF Bastien

systems & compiler enthusiast

🐦 @jfbastien

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.

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

TRI-AD

Software architect

2020-08/present

Enabling "mobility for all" at Toyota Research Institute–Advanced Development.

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.
  • 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

Bringing the Web up to Speed with WebAssembly.

Best paper award.

Re-published as a Communications of the ACM Research Highlight.

ASPLOS

2017

TACAS

2018

C++ Committee

  • 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
  • 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

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

CppCon

2020

CppCon

2019

CppCon

2018

CppCon

2016

CppCast

2018

CppCast

2015