-
Notifications
You must be signed in to change notification settings - Fork 268
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
AOP Support - where to implement? #139
Comments
So the options as I see it:
I think 2 is probably a good option if we introduce an integration point, like the ComponentPostProcessor in Core, where typhoon-aop could hook in. Separate versioning should not be too much problems if we keep the integration points stable. We could probably achieve 3, within option 2, with the use of pod sub specs if we wanted to. How do you guys see this set up? |
I was thinking option 2.
|
Ps: I was originally thinking about a swizzle-powered approach. Advantages:
Cons:
The proxy-based approach would be akin to the Java dynamic-proxy and cglib based weaving in Spring 2. (In java you need to mechanisms one for concrete classes, one for interfaces, in message-based . . Dynamic method dispatch means objc only requires the one approach) .... And the swizzling approach is similar to AspectJ weaving. There's also Justin Spahr-Summers' libffi based approach, however given Daniels research, it's not a good time to adopt as 64bit vs 32bit can cause issues. (Also while proven to work in theory, the demo in libextobjc has never been stable. . It quickly crashed for me.) . . . So now I'm sold on the proxy approach, though it still be interested in seeing other styles in future. As an added challenge, it would be good, if possible, to make the weaver pluggable. |
Alright, option 2 it is then. Let's see where it takes us. I agree it would be nice to have both proxy and swizzle weavers. Will look into how this can be done nicely. If you create a Typhoon-AOP repo (I'm missing the permissions) I will start setting things up to get us started. Will probably need some help with the CI/build-setup at some point. |
Oops. . . didn't realize about the permissions (will fix). . . have created the repo. Re CI build - I'll give you a login to the server, etc . . . (but I can set it up for you). Over the holidays I did some work on making some gradle tasks for Xcode. . I'm having a look again today. . This should provide build scripts that read much more nicely. |
Great, thanks. You gave me a login before .. I think I might have misplaced my credentials though ;-S Appreciate if you can set the account up for me (again). |
Once you have a couple of files in there I'll set up a build. . . . (gradle stuff should be ready in a few hours too). |
Cool. I'm gonna be on the road today but will get back to it once I have the time. |
Have fun :) (ps: fixed - you should have admin rights now) |
Erik has kick-started AOP support.
Can we implement this in a separate module or does it need to be tightly coupled with core?
The text was updated successfully, but these errors were encountered: