Esteban's ChangeLog week of 18 March 2019

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Esteban's ChangeLog week of 18 March 2019

EstebanLM
Hello!

This is my weekly ChangeLog, from 18 March 2019 to 24 March 2019.
You can see it in a better format by going here: http://log.smallworks.eu/web/search?from=18/3/2019&to=24/3/2019

ChangeLog
=========

21 March 2019:
--------------

*    I worked (despite being sick ;) ) on fixing how some announcements are handled in +WindowPresenter+
   
    The problem was: +WidgetBuilt+ and +WindowBuilt+ announcers were called after call an open command.
   
    This is usuallu not a problem but:
   
    * What happens if you run a modal dialog? No announce will be sent until modal is over.
    * What happens if I want to modify the presenter 'after' is built but 'before' is shown?
   
    So, I moved this announcements to right after the window is built, and I added a new vocabulary
    +#whenOpenedDo:+ to match the older +#whenClosedDo:+
   
    (btw... I think I will need an event to validate window closing... but that's another 2c)
   

19 March 2019:
--------------

*    Fixing UFFI architecture problems
   
    *
    *
    *
   
   
   
    I spent some time fixing some problems detected in UFFI.
   
    What happeneds is that when the inclusion of different architectures, some older asumptions were not
    valid anymore:
   
    1) +long ~= void*+
   
    This means passing +0+ as a +NULL+ is no longer valid! And that, of course, crashes some libraries, specially on windows.
   
    To fix this:
   
    * now passing nil will be mapped to +ExternalAddress null+ instead +0+. Somehow, I do not like to use the nil as NULL, and because of that:
    * I introduced the "constant" value +NULL+. Yes, now you can put +NULL+ in your call invocations and they will be translated to a NULL in the callout.
   
    2) Not all constant values are equivallent.
   
    In UFFI, you can do something like this:
   
    ----
    self ffiCall: #(void aFunction(42))
    ----
   
    means passing a constant value instead an argument. This is very useful in some contexts... But
    we cannot longer assume this value is same size as required. We need to make explicit the type!
   
    So, I modified the parser and now you can have calls like this:
   
    ----
    self ffiCall: #(void aFunction( (ulong) 42 ))
    ----
   
    Making the thing usable again :)
   
    *BEWARE:* This will only work for "numeric" types. You cannot cast anything as in C!
   

cheers!
Esteban