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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
72
Challenges and Opportunities - Unikernels in HPC && Cloud
eyberg
0
110
Climbing Out From the Digital Mud with Unikernels - HL2017
eyberg
0
190
Using Unikernels in Production Today
eyberg
0
250
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
個人の発見を、組織の知恵に 〜生成AI活用を"探索"から"組織の仕組み"へ〜
kintotechdev
2
210
速さだけじゃない! VoidZero ツールが移行先に選ばれる理由
mizdra
PRO
6
700
大規模災害時でも高い信頼性を維持するアプリケーション基盤の実現/nikkei-tech-talk46
nikkei_engineer_recruiting
0
120
Spring AI × MCP 入門〜AIエージェントへのツール公開、境界設計から始める最小構成 〜
yuyamiyamoto
0
190
Javaで学ぶSOLID原則
negima
1
240
Platform Engineering as a Product: Criteria for Improvement and Multi-Tenant Design
kumorn5s
0
420
プラットフォームエンジニア ワークショップ/ platform-workshop
databricksjapan
0
140
「コーディング」しない人のための Claude Code 入門 ChatGPT の次の一歩 — 業務に組み込む 育成・共有・自動化
rfdnxbro
1
470
Diagnosing performance problems without the guesswork
elenatanasoiu
0
130
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
2.7k
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
類似画像検索モデルの開発ノウハウ
lycorptech_jp
PRO
4
1.1k
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
New Earth Scene 8
popppiees
3
2.3k
Become a Pro
speakerdeck
PRO
31
6k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
370
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
460
Bash Introduction
62gerente
615
210k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
The Limits of Empathy - UXLibs8
cassininazir
1
340
Building AI with AI
inesmontani
PRO
1
1k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.5k
Un-Boring Meetings
codingconduct
0
300
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