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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
mbonnin
April 14, 2024
Programming
190
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Gratatouille: metaprogramming for your build-logic
mbonnin
April 14, 2024
More Decks by mbonnin
See All by mbonnin
Metadataquoi??
martinbonnin
0
150
Harmonizing APIs, a comparison of GraphQL and OpenAPI through the Spotify API
martinbonnin
1
94
Construisez votre bibliothèque Java/Kotlin
martinbonnin
2
120
Building libraries for the next 25 years
martinbonnin
2
120
GraphQL 💙 Kotlin, 2024 edition
martinbonnin
1
100
GraphQL_nullability__state_of_the_union.pdf
martinbonnin
1
46
Paris Kotlin Meetup de mai: Gradle 💙 Kotlin
martinbonnin
3
95
Offline and Reactive apps with Apollo Kotlin
martinbonnin
1
74
What's new in Apollo Kotlin 3
martinbonnin
2
260
Other Decks in Programming
See All in Programming
数百円から始めるRuby電子工作
tarosay
0
120
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
280
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
1
440
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
0
580
メールのエイリアス機能を履き違えない
isshinfunada
0
160
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
350
PHP Application における Kubernetes 内 gRPC 通信
ganchiku
0
570
作るコストが小さくなった時代 幸せに働くために改めて考えたいこと 〜エンジニアとして価値を出し続けるために注視している二分野〜
yuppeeng
0
140
PHPだって関数型したい 〜できること、できないこと〜 / fp-in-php
jsoizo
1
260
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
560
komatsuna「分散システムにおけるバグ分析手法」
komatsunaqa
0
140
React本体のコードリーディング
high_g_engineer
0
120
Featured
See All Featured
Joys of Absence: A Defence of Solitary Play
codingconduct
1
420
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
The Curious Case for Waylosing
cassininazir
1
440
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
440
Code Review Best Practice
trishagee
74
20k
Practical Orchestrator
shlominoach
191
11k
The Limits of Empathy - UXLibs8
cassininazir
1
570
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
sira's awesome portfolio website redesign presentation
elsirapls
0
310
Bash Introduction
62gerente
615
220k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
240
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
360
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