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
95
Harmonizing APIs, a comparison of GraphQL and OpenAPI through the Spotify API
martinbonnin
1
38
Construisez votre bibliothèque Java/Kotlin
martinbonnin
2
88
Building libraries for the next 25 years
martinbonnin
2
54
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
Composerが「依存解決」のためにどんな工夫をしているか #phpcon
o0h
PRO
1
330
フロントエンドのパフォーマンスチューニング
koukimiura
5
1.9k
AIともっと楽するE2Eテスト
myohei
8
2.9k
What's new in AppKit on macOS 26
1024jp
0
140
20250704_教育事業におけるアジャイルなデータ基盤構築
hanon52_
5
910
코딩 에이전트 체크리스트: Claude Code ver.
nacyot
0
870
LT 2025-06-30: プロダクトエンジニアの役割
yamamotok
0
820
オンコール⼊⾨〜ページャーが鳴る前に、あなたが備えられること〜 / Before The Pager Rings
yktakaha4
1
780
NEWT Backend Evolution
xpromx
1
110
テストから始めるAgentic Coding 〜Claude Codeと共に行うTDD〜 / Agentic Coding starts with testing
rkaga
15
5.3k
Rails Frontend Evolution: It Was a Setup All Along
skryukov
0
250
ペアプロ × 生成AI 現場での実践と課題について / generative-ai-in-pair-programming
codmoninc
2
20k
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
134
9.4k
Agile that works and the tools we love
rasmusluckow
329
21k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Speed Design
sergeychernyshev
32
1k
Navigating Team Friction
lara
187
15k
YesSQL, Process and Tooling at Scale
rocio
173
14k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Music & Morning Musume
bryan
46
6.7k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
Statistics for Hackers
jakevdp
799
220k
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