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 150 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 query 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 framework in Java, and is JIT compiled. LKQL is used by GNATcheck, an Ada coding standard verification tool developed by AdaCore, as its analysis engine.
For now LKQL is only used for coding standard verification in GNATcheck, but we would like to extend its usage to many other applications (automatic code fixes, 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.
Goals
This internship's final goal is to create an interactive playground to run LKQL requests on large codebases/corpus of codebases, and incrementally view results/be able to browse results. This could be done via a web application and / or an Ada IDEs integration, allowing users to perform requests on Ada code bases, and potentially perform automatic/structural search and replace.
The main goals of this internship will be:
Rehaul the LKQL interactive mode to allow an inter-processes communication
Integrate the LKQL engine to Ada IDEs (GNATstudio and / or VSCode) and create a view to run interactive queries on the current Ada project.
Create a web application embedding the LKQL engine and allowing anyone to “toy” with the language and run queries on AdaCore’s public code bases
Add structural search and replace features to the LKQL interactive driver and IDE integration
Design and implement code template patterns in the LKQL language
Skills required
A strong interest in compiler and language analysis technologies
An interest for UI / UX design
A first approach of the Java language
A good adaptability
Nice to have
Some knowledge of the Ada language
Some knowledge of web technologies (Spring | React / Vue | CSS frameworks)
Being autonomous
Timeframe & Location
During 2025 - 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.