Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Compile Time Code Weaving with Go
Search
Ian Eyberg
July 10, 2015
Technology
400
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
82
Challenges and Opportunities - Unikernels in HPC && Cloud
eyberg
0
130
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
140
No Parachute Introduction into Unikernel Orchestration
eyberg
0
290
You Say MicroServices - I say Unikernels
eyberg
1
230
The Current State of C++ Unikernels
eyberg
1
280
UniKernel Workflows
eyberg
0
110
Other Decks in Technology
See All in Technology
『GOエコノミー 』(相乗りサービス) におけるスペック駆動開発
mot_techtalk
1
300
「とりあえず動く」の先へ。 AI時代のチーム開発と内部設計/2026-slsdays
slsops
0
140
Futexes the good, the bad, the ugly
ennael
PRO
0
110
The seven pitfalls of AI (revised version)
ufried
0
250
[2026 Oracle Technical Deep Dive] エンタープライズAIエージェントを支えるOCIソリューション。ラインナップと特徴を理解しよう! (2026年9月17日開催)
oracle4engineer
PRO
0
470
20260929_AmazonGuardDutyの検出通知メールにAWS DevOpsAgentの調査結果を追加する
yhana
1
450
FinTech 1-2 : Overview of FinTech
ks91
PRO
0
140
AI Made Us Faster at Solving the Wrong Problems
marceloancelmo
0
160
形式手法を使って仕様をコーディングしよう
mikanichinose
0
180
ファミコンでPHPを動かす / PHP on the Famicom side b
tomzoh
0
130
大阪オフィスに Unitree Go2 がやってきたので Physical AI やってみた
dafujii
0
290
IoTデバイスを繋げるプロトコルMatterをAndroidで使用する方法
harutiro
0
110
Featured
See All Featured
The Curse of the Amulet
leimatthew05
3
15k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
WCS-LA-2024
lcolladotor
0
840
GraphQLとの向き合い方2022年版
quramy
50
15k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
Facilitating Awesome Meetings
lara
57
7.2k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
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