[Pharo-project] News about NativeBoost
Hello, Major news: NativeBoost now working on Macs! The main problem with Mac OS platform was that it requires a stack alignment discipline, while other platforms don't. So, i had to extend the assembler to make sure that all external calls will be made with properly aligned stack. Also, i spent time to improve error handling. Since in Cog/Stack VMs we having nice primitive error code, now it can report what caused a failure in more detail, than just failing a primitive and leaving a language side to guess what gone wrong. There's a lot of other small changes, like new tests, more examples etc.. But i don't want to describe them all (and frankly i don't remember all of them ;) Things not yet working: The callbacks to language side is not functional (i have to revise this code to synchronize it with callback machinery in Cog VMs). The callbacks to native code working well (of course, because it don't needs to deal with VM-specific stuff ;) The prebuilt VMs, which contain a NativeBoost plugin are now on Jenkins server. These VMs will be built automatically each time there is code update for Cog VMs (in same way as all continuous integration jobs). The only difference between original Cog VMs and Cog+NativeBoost VMs is that they contain NativeBoost plugin. So, you can use these VMs instead of Cog VMs if you like. You can download VMs from here: https://ci.lille.inria.fr/pharo/view/NativeBoost/ To install NativeBoost into your image follow instructions on: http://code.google.com/p/nativeboost/wiki/Installation -- Best regards, Igor Stasenko AKA sig.
@Windows users: Since Windows VMs currently not available on Jenkins server, i uploaded a prebuilt VM to NativeBoost project hosting: http://code.google.com/p/nativeboost/downloads/detail?name=nb-cog-win32.zip&... I tested if new code works on windows. And after fixing couple of glitches, it working well. I even been able to run true-type font rendering demo, which i made year ago (NBOpenGL project) without changing a bit of code there. -- Best regards, Igor Stasenko AKA sig.
A couple of issues I've had: 1) handleFailureIn: aContext nativeCode: aBlock does not recover after enabling native code for first time (successfully), but rather goes on to signal last error. (ie there'sno ifTrue: branch for enableNativeCode) 2) Trying to use the interpreterproxy directly in a method with NBNativeCodeGen methodAssembly: [:gen | ... ] gives an error. Could #utils and #stackAlignement be pushed up from NBFFICallout? Cheers, Henry On Aug 9, 2011, at 5:11 24PM, Igor Stasenko wrote:
Hello,
Major news: NativeBoost now working on Macs!
The main problem with Mac OS platform was that it requires a stack alignment discipline, while other platforms don't. So, i had to extend the assembler to make sure that all external calls will be made with properly aligned stack.
Also, i spent time to improve error handling. Since in Cog/Stack VMs we having nice primitive error code, now it can report what caused a failure in more detail, than just failing a primitive and leaving a language side to guess what gone wrong.
There's a lot of other small changes, like new tests, more examples etc.. But i don't want to describe them all (and frankly i don't remember all of them ;)
Things not yet working: The callbacks to language side is not functional (i have to revise this code to synchronize it with callback machinery in Cog VMs). The callbacks to native code working well (of course, because it don't needs to deal with VM-specific stuff ;)
The prebuilt VMs, which contain a NativeBoost plugin are now on Jenkins server.
These VMs will be built automatically each time there is code update for Cog VMs (in same way as all continuous integration jobs). The only difference between original Cog VMs and Cog+NativeBoost VMs is that they contain NativeBoost plugin. So, you can use these VMs instead of Cog VMs if you like.
You can download VMs from here: https://ci.lille.inria.fr/pharo/view/NativeBoost/
To install NativeBoost into your image follow instructions on: http://code.google.com/p/nativeboost/wiki/Installation
-- Best regards, Igor Stasenko AKA sig.
On 10 August 2011 15:44, Henrik Johansen <henrik.s.johansen@veloxit.no> wrote:
A couple of issues I've had:
1) Â Â Â handleFailureIn: aContext nativeCode: aBlock does not recover after enabling native code for first time (successfully), but rather goes on to signal last error. (ie there'sno ifTrue: branch for enableNativeCode)
Yes. Fixed
2) Trying to use the interpreterproxy directly in a method with  NBNativeCodeGen methodAssembly: [:gen | ... ] gives an error. Could #utils and  #stackAlignement be pushed up from NBFFICallout?
Yes, both in NativeBoost-Core-IgorStasenko.35
Cheers, Henry
On Aug 9, 2011, at 5:11 24PM, Igor Stasenko wrote:
Hello,
Major news: NativeBoost now working on Macs!
The main problem with Mac OS platform was that it requires a stack alignment discipline, while other platforms don't. So, i had to extend the assembler to make sure that all external calls will be made with properly aligned stack.
Also, i spent time to improve error handling. Since in Cog/Stack VMs we having nice primitive error code, now it can report what caused a failure in more detail, than just failing a primitive and leaving a language side to guess what gone wrong.
There's a lot of other small changes, like new tests, more examples etc.. But i don't want to describe them all (and frankly i don't remember all of them ;)
Things not yet working: Â The callbacks to language side is not functional (i have to revise this code to synchronize it with callback machinery in Cog VMs). Â The callbacks to native code working well (of course, because it don't needs to deal with VM-specific stuff ;)
The prebuilt VMs, which contain a NativeBoost plugin are now on Jenkins server.
These VMs will be built automatically each time there is code update for Cog VMs (in same way as all continuous integration jobs). The only difference between original Cog VMs and Cog+NativeBoost VMs is that they contain NativeBoost plugin. So, you can use these VMs instead of Cog VMs if you like.
You can download VMs from here: https://ci.lille.inria.fr/pharo/view/NativeBoost/
To install NativeBoost into your image follow instructions on: http://code.google.com/p/nativeboost/wiki/Installation
-- Best regards, Igor Stasenko AKA sig.
-- Best regards, Igor Stasenko AKA sig.
On 10 August 2011 16:09, Igor Stasenko <siguctua@gmail.com> wrote:
On 10 August 2011 15:44, Henrik Johansen <henrik.s.johansen@veloxit.no> wrote:
A couple of issues I've had:
1) Â Â Â handleFailureIn: aContext nativeCode: aBlock does not recover after enabling native code for first time (successfully), but rather goes on to signal last error. (ie there'sno ifTrue: branch for enableNativeCode)
Yes. Fixed
2) Trying to use the interpreterproxy directly in a method with  NBNativeCodeGen methodAssembly: [:gen | ... ] gives an error. Could #utils and  #stackAlignement be pushed up from NBFFICallout?
Yes, both in NativeBoost-Core-IgorStasenko.35
err.. take .36 , i found typo there :)
Cheers, Henry
On Aug 9, 2011, at 5:11 24PM, Igor Stasenko wrote:
Hello,
Major news: NativeBoost now working on Macs!
The main problem with Mac OS platform was that it requires a stack alignment discipline, while other platforms don't. So, i had to extend the assembler to make sure that all external calls will be made with properly aligned stack.
Also, i spent time to improve error handling. Since in Cog/Stack VMs we having nice primitive error code, now it can report what caused a failure in more detail, than just failing a primitive and leaving a language side to guess what gone wrong.
There's a lot of other small changes, like new tests, more examples etc.. But i don't want to describe them all (and frankly i don't remember all of them ;)
Things not yet working: Â The callbacks to language side is not functional (i have to revise this code to synchronize it with callback machinery in Cog VMs). Â The callbacks to native code working well (of course, because it don't needs to deal with VM-specific stuff ;)
The prebuilt VMs, which contain a NativeBoost plugin are now on Jenkins server.
These VMs will be built automatically each time there is code update for Cog VMs (in same way as all continuous integration jobs). The only difference between original Cog VMs and Cog+NativeBoost VMs is that they contain NativeBoost plugin. So, you can use these VMs instead of Cog VMs if you like.
You can download VMs from here: https://ci.lille.inria.fr/pharo/view/NativeBoost/
To install NativeBoost into your image follow instructions on: http://code.google.com/p/nativeboost/wiki/Installation
-- Best regards, Igor Stasenko AKA sig.
-- Best regards, Igor Stasenko AKA sig.
-- Best regards, Igor Stasenko AKA sig.
participants (2)
-
Henrik Johansen -
Igor Stasenko