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
Compile Time Code Weaving with Go
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Ian Eyberg
July 10, 2015
Technology
390
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Compile Time Code Weaving with Go
Goweave is a project to implement compile-time code weaving with go.
Ian Eyberg
July 10, 2015
More Decks by Ian Eyberg
See All by Ian Eyberg
Creating Open Source Unikernel Packages
eyberg
0
75
Challenges and Opportunities - Unikernels in HPC && Cloud
eyberg
0
120
Climbing Out From the Digital Mud with Unikernels - HL2017
eyberg
0
190
Using Unikernels in Production Today
eyberg
0
260
Adventures In Building Unikernel Clouds
eyberg
0
130
No Parachute Introduction into Unikernel Orchestration
eyberg
0
280
You Say MicroServices - I say Unikernels
eyberg
1
220
The Current State of C++ Unikernels
eyberg
1
270
UniKernel Workflows
eyberg
0
110
Other Decks in Technology
See All in Technology
ZOZOTOWNの進化と信頼性を両立する負荷試験
zozotech
PRO
2
160
Road to SRE NEXTの今までとこれから
hiroyaonoe
0
310
[2026-07-15] AI Ready なはずだったアーキテクチャと、見えてきた課題・次に目指す状態
wxyzzz
4
2.7k
プロダクトだけじゃない、社内プロセスにおける自動化・省力化ノススメ
kakehashi
PRO
1
3.6k
AI Driven AI Governance
pict3
0
330
SRE Lounge Hiroshimaへの招待
grimoh
0
640
Genie Ontologyは銀の弾丸かを考える / Is Genie Ontology a Silver Bullet?
nttcom
0
240
「ちゃんとやっている」は独りよがりだった ― 不安に寄り添うインシデント対応へ / Towards incident response that addresses anxieties
chmikata
1
5k
ソニー銀行におけるビジネスアジリティ向上のためのクラウドシフト戦略
srenext
0
160
Amazon EVS で VCF 9.0 / 9.1 のサポート開始まとめ
mtoyoda
0
290
世界、断片、モデル。そして理解
ardbeg1958
1
110
クラウド上のデータ復旧で見落としがちな制約: 医療系 SaaS の BCP 設計から得た教訓
kakehashi
PRO
0
3.4k
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
55
8.2k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
220
HDC tutorial
michielstock
2
740
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Facilitating Awesome Meetings
lara
57
7k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
600
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.7k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
150
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
The Spectacular Lies of Maps
axbom
PRO
1
850
Chasing Engaging Ingredients in Design
codingconduct
0
230
Transcript
Compile Time Code Weaving with Go https://github.com/deferpanic/goweave
I like your software but…
What sucks about Go?
Do you know about aspectj?
Really?
I’m not a code purist
“which is our full time job . write a program
to write a program” - rob pike / gopherfest 2015
None
Go is Actually a Decent Fit
Prior Art go fmt go fix go generate
go fix
No Wrapping I don’t want to update code && leave
the refs in it’s non-trivial I don’t want to hack it in/out each time I could forget in the future or not find all in the past
Aspect Contains behavior that is prominent in many places but
don’t really have anything to do with your business logic. Logging is a canonical example.
Pointcut an expression that details where to apply your behavior
CALL Before, after or wrap around calling a method. EXECUTE Before or after inside executing a method. WITHIN Every single call within a method.
Advice fmt.Println("Hello, 世界")
Logging
Monitoring
Performance Analysis
Debugging & Tracing
Undo Functionality
None
Behavior Mutation
Security
Transactions
Log every call to Itoa
Validation
Time Database Query Latencies
Ensure we log every panic in a goroutine
loom central place for storing .weave files you don’t have
to re-invent the wheel more eyes - better software
it’s really
HACKY
https://github.com/deferpanic/goweave https://github.com/deferpanic/loom