Careers > Libadalang: Optimizing the LKQL JIT compiler
Last modified 9/11/2026 2:48:18 PM

Libadalang: Optimizing the LKQL JIT compiler

Internship
AdaCore
Paris, France

AdaCore: Helping Developers Build Software that Matters
Everything we do at AdaCore is centered around helping developers build safe, secure and reliable software.


For 30 years, we've partnered with global leaders in aerospace & defense, air traffic management, space, railway and financial services. We've developed tools and services simplifying high-integrity software development through a subscription-based model. As demand for secure applications grows in industries like automotive, medical, energy, and IoT, we're adapting our proven technologies to assist a new generation of developers.
Our +190 global experts based in the US, France, Germany, the UK, and Estonia, collectively develop cutting-edge technologies to address the challenges of high-grade software development.
Joining AdaCore is about joining a culture of innovation, openness, collaboration and dependability, which defines how we work together, with our customers and partners.

 

Context


Langkit Query Language (LKQL) is a language allowing its users to perform syntactic and semantic requests on a given code base, exploring the parse tree and performing “pattern matching” on syntactic nodes. It is implemented using Oracle's Truffle Java framework that turns a recursive descent interpreter into a JIT compiler.


For now LKQL is only used by the Ada coding standard verification tool, GNATcheck, but we would like to extend its usage to many other applications (linting in IDEs, legality checks, structural code replacement…). We have the will to empower LKQL users and provide our developers out-of-the-box tools to query and manipulate Ada sources with good performances.


Goals


This internship's final goal is to enhance the overall performances of the LKQL language and make the GNATcheck rules run globally faster. The intern will have to investigate current performances of the LKQL JIT compiler, profile it and offer suggestions to enhance the latter regarding real world use cases.


The main goals of this internship will be:

  • Profile the current LKQL implementation using various tools (perf, valgrind, IdeaGraph Visualizer, …)
  • Analyze the profiling results and spot places in the code that may be enhanced
  • Implement, test and benchmark solutions for spotted problems
  • Develop benchmarks to test LKQL performances and ensure there is no regression when making modifications in the engine.

 


Skills required

  • A strong interest in compiler and language analysis technologies
  • Knowledge of the Java language and its semantics
  • A first approach of profiling tools
  • A good adaptability

 


Nice to have

  • Some knowledge of the Ada language
  • Some knowledge of the Truffle Java framework
  • Being autonomous

 


Timeframe & Location
During 2027 - 6 months - Paris office

 

Beyond the job


We're a global organization driven by diverse backgrounds, fostering innovation through an open exchange of ideas. We welcome applicants of all backgrounds, celebrating diversity in ethnicity, nationality, gender, age, religion, abilities, sexual orientation, veteran or marital status. 
Our commitment is to help our teammates, wherever they are based, feel comfortable and satisfied, by encouraging flexibility to ensure them a healthy work-life balance. Additionally, we prioritize individual development by offering continuous training from day one with a personalized onboarding plan.

For more information about our recruitment process, visit our FAQ.

 

Powered by Hello Talent