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
84
Harmonizing APIs, a comparison of GraphQL and OpenAPI through the Spotify API
martinbonnin
1
34
Construisez votre bibliothèque Java/Kotlin
martinbonnin
2
88
Building libraries for the next 25 years
martinbonnin
2
50
GraphQL 💙 Kotlin, 2024 edition
martinbonnin
1
59
GraphQL_nullability__state_of_the_union.pdf
martinbonnin
1
32
Paris Kotlin Meetup de mai: Gradle 💙 Kotlin
martinbonnin
3
65
Offline and Reactive apps with Apollo Kotlin
martinbonnin
1
54
What's new in Apollo Kotlin 3
martinbonnin
2
200
Other Decks in Programming
See All in Programming
Cloudflare Realtime と Workers でつくるサーバーレス WebRTC
nekoya3
0
370
Rails産でないDBを Railsに引っ越すHACK - Omotesando.rb #110
lnit
1
160
生成AIで日々のエラー調査を進めたい
yuyaabo
0
450
「兵法」から見る質とスピード
ickx
0
250
TypeScript を活かしてデザインシステム MCP を作る / #tskaigi_after_night
izumin5210
5
520
実はすごいスピードで進化しているCSS
hayato_yokoyama
0
110
Go Modules: From Basics to Beyond / Go Modulesの基本とその先へ
kuro_kurorrr
0
100
セキュリティマネジャー廃止とクラウドネイティブ型サンドボックス活用
kazumura
1
160
人には人それぞれのサービス層がある
shimabox
3
650
從零到一:搭建你的第一個 Observability 平台
blueswen
0
710
複数アプリケーションを育てていくための共通化戦略
irof
9
3.6k
コード書くの好きな人向けAIコーディング活用tips #orestudy
77web
3
270
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Code Review Best Practice
trishagee
68
18k
Making Projects Easy
brettharned
116
6.2k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
470
Optimizing for Happiness
mojombo
379
70k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
52
2.8k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
3
120
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
Building an army of robots
kneath
306
45k
The Straight Up "How To Draw Better" Workshop
denniskardys
233
140k
Done Done
chrislema
184
16k
Writing Fast Ruby
sferik
628
61k
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