Skip to content

Support selective exfiltration#162

Merged
pfitzseb merged 5 commits intoJuliaDebug:masterfrom
cstjean:selective-exfiltrate
Dec 26, 2025
Merged

Support selective exfiltration#162
pfitzseb merged 5 commits intoJuliaDebug:masterfrom
cstjean:selective-exfiltrate

Conversation

@cstjean
Copy link
Contributor

@cstjean cstjean commented Dec 23, 2025

Supports half of #96

@cstjean
Copy link
Contributor Author

cstjean commented Dec 23, 2025

Do you want to keep supporting 1.6? I don't mind copy-pasting Base.isexpr (apparently defined in 1.7)

@cstjean
Copy link
Contributor Author

cstjean commented Dec 23, 2025

Copy-pasted; felt silly to drop 1.6 support for a one-line definition.

Selective exfiltration makes it a lot more reasonable to set the safe house to Main.

const INFILTRATION_LOCK = Ref{ReentrantLock}()

# Base version copy pasted; necessary for Julia 1.6 support
isexpr(@nospecialize(ex), head::Symbol) = isa(ex, Expr) && ex.head === head
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd prefer having this behind an isdefined(Base, :isexpr) guard just so implementation changes in julia propagate properly.

@cstjean
Copy link
Contributor Author

cstjean commented Dec 26, 2025

Sounds good, will do that change next week.

I also slipped in @exfiltrate var = foo(x+2) syntax into this PR. It looks natural to me, but if you'd prefer I don't mind taking it out.

@cstjean
Copy link
Contributor Author

cstjean commented Dec 26, 2025

Turns out Meta.isexpr was defined on 1.6. 356b51d

@pfitzseb pfitzseb merged commit ad6b917 into JuliaDebug:master Dec 26, 2025
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants