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
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
こんなアーキテクチャ図はいやだ / Anti-pattern in AWS Architecture Diagrams
naospon
1
380
生成AI時代のエンジニア育成 変わる時代と変わらないコト
starfish719
0
7.6k
#jawsugyokohama 100 LT11, "My AWS Journey 2011-2026 - kwntravel"
shinichirokawano
0
300
明日からドヤれる!超マニアックなAWSセキュリティTips10連発 / 10 Ultra-Niche AWS Security Tips
yuj1osm
0
490
AWS認定資格は本当に意味があるのか?
nrinetcom
PRO
1
240
「責任あるAIエージェント」こそ自社で開発しよう!
minorun365
4
580
昔はシンプルだった_AmazonS3
kawaji_scratch
0
290
ハーネスエンジニアリングの概要と設計思想
sergicalsix
4
850
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
4
23k
Amazon S3 Filesについて
yama3133
2
140
最新の脅威動向から考える、コンテナサプライチェーンのリスクと対策
kyohmizu
0
250
3つのボトルネックを解消し、リリースエンジニアリングを再定義した話
nealle
0
490
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
ラッコキーワード サービス紹介資料
rakko
1
3M
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
New Earth Scene 8
popppiees
3
2.1k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
510
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.8k
The Invisible Side of Design
smashingmag
302
51k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
Tell your own story through comics
letsgokoyo
1
890
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
180
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
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