Hi all!, I wanted to let you know that I have implemented a "feature" to have type information "live". Currently it is implemented on Cuis but the idea is to port it to Pharo and Squeak as well. This feature is based on a few changes on the VM that collects the class of the object assigned to a variable, a parameter or when returning from a method. That information is available from the image and allows to improve the tools radically, like the autocompletion on the browser, looking for senders/implementors and even "scoping" the refactorings based on the type info.
I presented it at the last Smalltalks (the argentinean smalltalk conference) and I'm happy to announce its alpha version (1/1000) asFloat :-)
Here is a link to the repo that has the VM and a Cuis image to play with it: https://github.com/hernanwilkinson/Cuis-Smalltalk-DynamicTypeInformation It also has the source of the VM's changes if you want to see how it is implemented. Currently it is implemented only in the stack VM and the VMs I compiled and uploaded to the repo are 64 bits for MacOs and Linux. (I don't have a Windows machine to compile it :-) )
Here is a link to a video that shows how it is implemented and how to use it: https://t.co/n8FQuo7pKZ
If you want to see the slides of the presentation, here is the link: https://www.slideshare.net/hernanwilkinson/dynamic-type-information
I would love for you to try it and get feedback, ideas, etc. I really believe it is a "killer feature", something that could take Smalltalk one step further and show the way to other dynamically typed languages.
Cheers! Hernan
Hernan,
this is a great project and the slides are very nice as well.
One small typo on slide 65: "Feeling: When you start using it, you don't want to loose it"
Actually you do, since "loose it" is kind of like "release it" or "unleash it". What you most certainly don't want to do is "lose" it.
Anyway, congratulations! -- Jecel
Hi Jecel! thank you very much! I'm really exited/hooked with this idea. At 10Pines we are going to invest some of my time to polish it and port it to squeak/pharo, in fact the VM works for Squeak and I have a Squeak image with this but without the changes to the tools... if I have a couple of minutes I'll try to port all. I really believe it can improve our tools a lot.
Thank you for letting me know about the typo!
Cheers! Hernan
On Sat, Nov 24, 2018 at 9:33 PM Jecel Assumpcao Jr. jecel@merlintec.com wrote:
Hernan,
this is a great project and the slides are very nice as well.
One small typo on slide 65: "Feeling: When you start using it, you don't want to loose it"
Actually you do, since "loose it" is kind of like "release it" or "unleash it". What you most certainly don't want to do is "lose" it.
Anyway, congratulations! -- Jecel
Looks really cool. This will be really useful in development.
Cheers, Karl
On Sat, Nov 24, 2018 at 4:52 PM Hernan Wilkinson hernan.wilkinson@gmail.com wrote:
Hi all!, I wanted to let you know that I have implemented a "feature" to have type information "live". Currently it is implemented on Cuis but the idea is to port it to Pharo and Squeak as well. This feature is based on a few changes on the VM that collects the class of the object assigned to a variable, a parameter or when returning from a method. That information is available from the image and allows to improve the tools radically, like the autocompletion on the browser, looking for senders/implementors and even "scoping" the refactorings based on the type info.
I presented it at the last Smalltalks (the argentinean smalltalk conference) and I'm happy to announce its alpha version (1/1000) asFloat :-)
Here is a link to the repo that has the VM and a Cuis image to play with it: https://github.com/hernanwilkinson/Cuis-Smalltalk-DynamicTypeInformation It also has the source of the VM's changes if you want to see how it is implemented. Currently it is implemented only in the stack VM and the VMs I compiled and uploaded to the repo are 64 bits for MacOs and Linux. (I don't have a Windows machine to compile it :-) )
Here is a link to a video that shows how it is implemented and how to use it: https://t.co/n8FQuo7pKZ
If you want to see the slides of the presentation, here is the link: https://www.slideshare.net/hernanwilkinson/dynamic-type-information
I would love for you to try it and get feedback, ideas, etc. I really believe it is a "killer feature", something that could take Smalltalk one step further and show the way to other dynamically typed languages.
Cheers! Hernan
--
*Hernán WilkinsonAgile Software Development, Teaching & Coaching* *Phone: +54 - 011 - *6091 - 3125
*Mobile: +54 - 911 - 4470 - 7207email: hernan.wilkinson@10Pines.comsite: http://www.10Pines.com http://www.10pines.com/* Address: Alem 693, Floor 5 B, Buenos Aires, Argentina
Hi Hernán,
This looks really cool. While I was watching the video, I was wondering why you started to implement this in the VM. To me it seems more straightforward to change the encoder to generate extra bytecodes to store the type information. The advantage of this approach would be that it could leverage the JIT. Another thing I was thinking about are primitives. For most primitives you know what the return type will be and what the expected arguments are, so you could just create a lookup table for the code completion tool with that information.
Levente
On Sat, 24 Nov 2018, Hernan Wilkinson wrote:
Hi all!,I wanted to let you know that I have implemented a "feature" to have type information "live". Currently it is implemented on Cuis but the idea is to port it to Pharo and Squeak as well. This feature is based on a few changes on the VM that collects the class of the object assigned to a variable, a parameter or when returning from a method. That information is available from the image and allows to improve the tools radically, like the autocompletion on the browser, looking for senders/implementors and even "scoping" the refactorings based on the type info.
I presented it at the last Smalltalks (the argentinean smalltalk conference) and I'm happy to announce its alpha version (1/1000) asFloat :-)
Here is a link to the repo that has the VM and a Cuis image to play with it: https://github.com/hernanwilkinson/Cuis-Smalltalk-DynamicTypeInformation It also has the source of the VM's changes if you want to see how it is implemented. Currently it is implemented only in the stack VM and the VMs I compiled and uploaded to the repo are 64 bits for MacOs and Linux. (I don't have a Windows machine to compile it :-) )
Here is a link to a video that shows how it is implemented and how to use it: https://t.co/n8FQuo7pKZ
If you want to see the slides of the presentation, here is the link: https://www.slideshare.net/hernanwilkinson/dynamic-type-information
I would love for you to try it and get feedback, ideas, etc. I really believe it is a "killer feature", something that could take Smalltalk one step further and show the way to other dynamically typed languages.
Cheers! Hernan
-- Hernán Wilkinson Agile Software Development, Teaching & Coaching Phone: +54 - 011 - 6091 - 3125 Mobile: +54 - 911 - 4470 - 7207 email: hernan.wilkinson@10Pines.com site: http://www.10Pines.com Address: Alem 693, Floor 5 B, Buenos Aires, Argentina
squeak-dev@lists.squeakfoundation.org