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
Ian Eyberg
July 10, 2015
Technology
0
380
Compile Time Code Weaving with Go
Goweave is a project to implement compile-time code weaving with go.
Ian Eyberg
July 10, 2015
Tweet
Share
More Decks by Ian Eyberg
See All by Ian Eyberg
Creating Open Source Unikernel Packages
eyberg
0
59
Challenges and Opportunities - Unikernels in HPC && Cloud
eyberg
0
92
Climbing Out From the Digital Mud with Unikernels - HL2017
eyberg
0
180
Using Unikernels in Production Today
eyberg
0
240
Adventures In Building Unikernel Clouds
eyberg
0
110
No Parachute Introduction into Unikernel Orchestration
eyberg
0
260
You Say MicroServices - I say Unikernels
eyberg
1
210
The Current State of C++ Unikernels
eyberg
1
260
UniKernel Workflows
eyberg
0
100
Other Decks in Technology
See All in Technology
SOTA競争から人間を超える画像認識へ
shinya7y
0
690
仕様駆動開発を実現する上流工程におけるAIエージェント活用
sergicalsix
10
5.4k
2025/10/27 JJUGナイトセミナー WildFlyとQuarkusの 始め方
megascus
0
110
Data Engineering Guide 2025 #data_summit_findy by @Kazaneya_PR / 20251106
kazaneya
PRO
7
950
戦えるAIエージェントの作り方
iwiwi
21
10k
書籍『実践 Apache Iceberg』の歩き方
ishikawa_satoru
0
450
ラスベガスの歩き方 2025年版(re:Invent 事前勉強会)
junjikoide
0
890
プロファイルとAIエージェントによる効率的なデバッグ / Effective debugging with profiler and AI assistant
ymotongpoo
1
810
短期間でRAGシステムを実現 お客様と歩んだ生成AI内製化への道のり
taka0709
1
170
Digitization部 紹介資料
sansan33
PRO
1
5.8k
現場の壁を乗り越えて、 「計装注入」が拓く オブザーバビリティ / Beyond the Field Barriers: Instrumentation Injection and the Future of Observability
aoto
PRO
1
900
Boxを“使われる場”にする統制と自動化の仕組み
demaecan
0
180
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
234
18k
What's in a price? How to price your products and services
michaelherold
246
12k
Agile that works and the tools we love
rasmusluckow
331
21k
Designing for Performance
lara
610
69k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
640
Building Adaptive Systems
keathley
44
2.8k
The Cult of Friendly URLs
andyhume
79
6.7k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Context Engineering - Making Every Token Count
addyosmani
8
330
Six Lessons from altMBA
skipperchong
29
4k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
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