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
140
Gratatouille: metaprogramming for your build-logic
mbonnin
April 14, 2024
Tweet
Share
More Decks by mbonnin
See All by mbonnin
Metadataquoi??
martinbonnin
0
90
Harmonizing APIs, a comparison of GraphQL and OpenAPI through the Spotify API
martinbonnin
1
36
Construisez votre bibliothèque Java/Kotlin
martinbonnin
2
88
Building libraries for the next 25 years
martinbonnin
2
53
GraphQL 💙 Kotlin, 2024 edition
martinbonnin
1
63
GraphQL_nullability__state_of_the_union.pdf
martinbonnin
1
33
Paris Kotlin Meetup de mai: Gradle 💙 Kotlin
martinbonnin
3
66
Offline and Reactive apps with Apollo Kotlin
martinbonnin
1
55
What's new in Apollo Kotlin 3
martinbonnin
2
200
Other Decks in Programming
See All in Programming
XSLTで作るBrainfuck処理系
makki_d
0
210
Go1.25からのGOMAXPROCS
kuro_kurorrr
1
800
Claude Codeの使い方
ttnyt8701
1
130
Julia という言語について (FP in Julia « SIDE: F ») for 関数型まつり2025
antimon2
3
980
GoのGenericsによるslice操作との付き合い方
syumai
3
680
童醫院敏捷轉型的實踐經驗
cclai999
0
180
Is Xcode slowly dying out in 2025?
uetyo
1
190
AWS CDKの推しポイント 〜CloudFormationと比較してみた〜
akihisaikeda
3
310
Create a website using Spatial Web
akkeylab
0
300
5つのアンチパターンから学ぶLT設計
narihara
1
110
Result型で“失敗”を型にするPHPコードの書き方
kajitack
4
290
Webからモバイルへ Vue.js × Capacitor 活用事例
naokihaba
0
760
Featured
See All Featured
A designer walks into a library…
pauljervisheath
206
24k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
46
9.6k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
228
22k
How to train your dragon (web standard)
notwaldorf
92
6.1k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
Code Reviewing Like a Champion
maltzj
524
40k
Rails Girls Zürich Keynote
gr2m
94
14k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.8k
How GitHub (no longer) Works
holman
314
140k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.8k
Fireside Chat
paigeccino
37
3.5k
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