Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Gratatouille: metaprogramming for your build-logic
Search
mbonnin
April 14, 2024
Programming
2
130
Gratatouille: metaprogramming for your build-logic
mbonnin
April 14, 2024
Tweet
Share
More Decks by mbonnin
See All by mbonnin
Metadataquoi??
martinbonnin
0
75
Harmonizing APIs, a comparison of GraphQL and OpenAPI through the Spotify API
martinbonnin
1
32
Construisez votre bibliothèque Java/Kotlin
martinbonnin
2
86
Building libraries for the next 25 years
martinbonnin
2
47
GraphQL 💙 Kotlin, 2024 edition
martinbonnin
1
57
GraphQL_nullability__state_of_the_union.pdf
martinbonnin
1
30
Paris Kotlin Meetup de mai: Gradle 💙 Kotlin
martinbonnin
3
63
Offline and Reactive apps with Apollo Kotlin
martinbonnin
1
52
What's new in Apollo Kotlin 3
martinbonnin
2
190
Other Decks in Programming
See All in Programming
サービスレベルを管理してアジャイルを加速しよう!! / slm-accelerate-agility
tomoyakitaura
1
190
読書シェア会 vol.4 『ダイナミックリチーミング 第2版』
kotaro666
0
100
スモールスタートで始めるためのLambda×モノリス(Lambdalith)
akihisaikeda
2
310
Cursor/Devin全社導入の理想と現実
saitoryc
27
20k
Making TCPSocket.new "Happy"!
coe401_
1
2.5k
RubyKaigi Dev Meeting 2025
tenderlove
1
860
VitestのIn-Source Testingが便利
taro28
8
2.3k
Instrumentsを使用した アプリのパフォーマンス向上方法
hinakko
0
200
Qiita Bash
mercury_dev0517
2
220
Lambda(Python)の リファクタリングが好きなんです
komakichi
3
230
Glue Studio Visual ETL実装時にハマったこと
kokitamura
0
100
State of Namespace
tagomoris
5
2.2k
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Building a Modern Day E-commerce SEO Strategy
aleyda
40
7.2k
Building an army of robots
kneath
305
45k
Fireside Chat
paigeccino
37
3.4k
Thoughts on Productivity
jonyablonski
69
4.6k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
The Pragmatic Product Professional
lauravandoore
33
6.6k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
GitHub's CSS Performance
jonrohan
1030
460k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Producing Creativity
orderedlist
PRO
344
40k
Designing Experiences People Love
moore
142
24k
Transcript
Gratatouille Webinar - Apr 2024
Hi 👋 🥐
apollographql/apollo-kotlin
Automatic code generation 4 query.graphql schema.graphqls Kotlin
Codegen 5 { sessions { nodes { language title startsAt
speakers { name } } } } class Session(val nodes: List<Node>) class Node( val language: String, val title: String, val startsAt: DateTime, val speakers: List<Speaker> ) class Speaker(val name: String)
6
7
Classloaders 8 • Several ones ◦ root project classloader ◦
subproject classloader ◦ buildSrc classloader • See Crash course in classloaders
9
10 Yes, BUT… johnrengelman/shadow
11 Yes, BUT… • Slow to compile • Duplicates bytecode
• Doesn’t fix everything GradleUp/Gr8 🐘🆙
Other things 12 • Overlapping outputs • Build cache •
Path sensitivity • Manual serialization • Parallel execution • Optional/nullable ⁉ • Type safety
Entering Gratatouille Even more classloaders… ;-)
Live demo?
Status 15 • Mostly proof of concept • Branch of
Apollo working with it • Single artifact mode • Testing