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
390
0
Share
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
69
Challenges and Opportunities - Unikernels in HPC && Cloud
eyberg
0
110
Climbing Out From the Digital Mud with Unikernels - HL2017
eyberg
0
180
Using Unikernels in Production Today
eyberg
0
250
Adventures In Building Unikernel Clouds
eyberg
0
130
No Parachute Introduction into Unikernel Orchestration
eyberg
0
270
You Say MicroServices - I say Unikernels
eyberg
1
220
The Current State of C++ Unikernels
eyberg
1
260
UniKernel Workflows
eyberg
0
110
Other Decks in Technology
See All in Technology
LLMに何を任せ、何を任せないか
cap120
11
6.7k
VSCode中心だった自分がターミナル沼に入門した話
sanogemaru
0
870
Zephyr(RTOS)でOpenPLCを実装してみた
iotengineer22
0
170
Zephyr(RTOS)でARMとRISC-Vのコア間通信をしてみた
iotengineer22
0
110
Bill One 開発エンジニア 紹介資料
sansan33
PRO
5
18k
OCI技術資料 : 証明書サービス概要
ocise
1
7.2k
PostgreSQL 18のNOT ENFORCEDな制約とDEFERRABLEの関係
yahonda
0
150
Blue/Green Deployment を用いた PostgreSQL のメジャーバージョンアップ
kkato1
0
170
Even G2 クイックスタートガイド(日本語版)
vrshinobi1
0
170
Sansanの認証基盤を支えるアーキテクチャとその振り返り
sansantech
PRO
1
120
Oracle Cloud Infrastructure:2026年3月度サービス・アップデート
oracle4engineer
PRO
0
250
TUNA Camp 2026 京都Stage ヒューリスティックアルゴリズム入門
terryu16
0
650
Featured
See All Featured
BBQ
matthewcrist
89
10k
Between Models and Reality
mayunak
2
250
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.2k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
180
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.2k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
120
For a Future-Friendly Web
brad_frost
183
10k
The Curse of the Amulet
leimatthew05
1
11k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
330
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
390
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