> On 20 Feb 2017, at 08:00, esteba...@gmail.com wrote:
> 
> Hello!
> 
> This is my weekly ChangeLog, from 13 February 2017 to 19 February 2017.
> You can see it in a better format by going here: 
> http://log.smallworks.eu/web/search?from=13/2/2017&to=19/2/2017
> 
> ChangeLog
> =========
> 
> 17 February 2017:
> -----------------
> 
> *    I spent sometime working on UFFI and 64bits. 
> 
>    Sometime ago I started this and found a problem that I talked with Eliot, 
> you can found the rational 
>    
> [here](http://forum.world.st/Support-for-LP64-amp-LLP64-in-FFI-Kernel-td4929946.html)
>  (we need to model 
>    in some way the fact that longs have different sizes in different 
> platforms, notably LP64 and LLP64). 
> 
>    In that discussion, with Eliot we proposed to add a new FFI type, a 
> +platformLong+ who will behave as
>    expected. I started to implement but didn't have the time to finish it and 
> I needed to jump to other 
>    stuff. In the mean time, Ronie found a different workaround: instead 
> adding support in the VM, just map 
>    in image the type to correct size.
> 
>    This is how it will work: 
> 
>    |===
>    |Platform
>    |type
>    |size
>    |FFI type
>    |
> 
>    |i386
>    |long
>    |4
>    |long
>    |
> 
>    |LP64
>    |long
>    |8
>    |long long
>    |
> 
>    |LLP64
>    |long
>    |4
>    |long
>    |
>    |===

I guess I need to work on the exporter for tables ;)

>    Ensuring this mappings happens when compiling an UFFI method (and a 
> structure, etc.) we can workaround
>    the plugin limitation. 
> 
>    So I worked taking Ronie's work, extended it to structures and added my 
> own work on mapping structures 
>    in a 'platform-agnostic' way: the idea is to take values by 'offset' 
> instead the constant value as 
>    it was done up to now. On 'structure-compilation time' (it happens first 
> time structure is used on a 
>    session), it calculates also the correct field access offsets and 
> structure size.
> 
>    This is mostly working, it just lacks some testing and pushing it to 
> image... then I can start prepare
>    Athens, SDL2 and libgit2 bindings to work both in 32 and 64 bits :)
> 
> 
> 16 February 2017:
> -----------------
> 
> *    I continue enhancing 
> [iceberg](https://github.com/npasserini/iceberg/pull/277) as much as I can, 
> waiting to 
>    +0.4 release+ (that should be very soon). 
> 
>    I added a couple of new things: 
> 
>    * capability of plugins to extend "remotes panel" of repositories browser 
> (so we can have options there)
>    * added a new GitHub option: remove old branches dialog. 
>    * and I started a refactor of GitHub plugin to use a command-pattern 
> hierarchy instead polluting the plugin. 
> 
>    Rationale of plugin action addition is simple: if we receive a lot of 
> bugfixes in the form of a pull request,
>    it means people will be spawning branches all over the place, those 
> branches can stay there a lot of time 
>    but eventually, is good to clean up a bit. Now we can do this cleaning 
> from Pharo :)
> 
>    This is not just useful but it shows the power we can achieve by extending 
> iceberg with plugins for different 
>    purposes ;)
> 
> 
> 15 February 2017:
> -----------------
> 
> *    I spent some time bringing back some functionality I implemented for 
> [voyage](https://github.com/pharo-nosql/voyage) 
>    a lot of time ago (like 4 years) that went missing because of lack of use. 
> 
>    This is a "dinamic singleton access strategy"... something like that, more 
> or less... 
> 
>    The idea of this is, sometimes you need to have more than one repository 
> active in an image, but you still
>    want to use the singleton strategy (because is a lot cooler doing 
> something like +Person selectOne: [ ... ]+ 
>    instead of +myRepository selectOne: Person where: [...]+. 
> 
>    Voyage always allowed different container strategies, even if in master 
> implementation there is just one, 
>    +VOSingletonContainer+. Now I added another called +VODynamicContainer+ 
> and this allow to take the 
>    repostory from a 'dynamic variable' called +VOCurrentRepository+. 
> 
>    So, for instance, when you have a seaside application where each user 
> works on his own database, you can create 
>    a filter of the way: 
> 
>    ----
>    VoyageFilter>>handleFiltered: aRequestContext
>       VOCurrentRepository 
>               value: self obtainUserRepository
>               during: [ self next handleFiltered: aRequestContext ]
> 
>    VoyageFilter>>obtainUserRepository 
>       ^ self session 
>               propertyAt: #voyageRepository 
>               ifAbsentPut: [ VOMongoRepository database: (self session 
> propertyAt: #username) ]
>    ----
> 
>    ... adn you will handle your application as if your repository would be a 
> singleton. 
> 
>    To make this work, the only thing you need is to configure your repository 
> this way: 
> 
>    ----
>    VORepository repositoryContainer: VODynamicContainer new
>    ----
> 
> 
> 14 February 2017:
> -----------------
> 
> *    I lost all day digging the problem with +FFICallbackTests+ on windows 
> platforms. 
> 
>    The problem occurs when going back to the image from a callback context 
> 'when calling the tests'. Is 
>    important to remark this because other systems using a lot of callbacks 
> are working fine (notably iceberg, 
>    the libgit2 bindings use callbacks as an important part of his design). 
> Also +Athens+ (who uses callbacks 
>    to provide some values cairo lib needs) is working correctly too. 
> 
>    So, I'm tempted to think it may be a problem with +MinGW+ implementation 
> of +qsort+ function, and we use it 
>    to test the callbacks... anyway, I will keep digging when I find some more 
> time, for now is enough to constate
>    it is not being a problem for windows users (unless, of course, they need 
> to use qsort ;) )
> 
> 
> 13 February 2017:
> -----------------
> 
> *    I worked on a plugin for iceberg that will take the place of the old 
> "create SLICE"... so far is a very simple
>    plugin that does exactly wjat the slice creator did: takes an issue number 
> and gets the title from it, to 
>    conform a branch name called +12345-issue-title-here+. 
> 
>    With this change (pull request 
> [here](https://github.com/npasserini/iceberg/pull/277)), all pieces to 
> replace 
>    the old fix process are there: 
> 
>    * adding remotes (so you can clone pharo and use your remote as temporal 
> destination)
>    * creating pull requests (so you can submit your changes in a fancy way)
>    * creating branches that conforms to our convention (so you can create 
> branches as we like them ;)
> 
>    ... all this in an easy way (at least for me, heh). 
> 
>    It remains, of course, test everything and enhance it with user feedback, 
> but we will be starting that next 
>    week.
> 
> *    I finally finished restoring testing phase to [VM 
> building](https://github.com/pharo-project/pharo-vm). 
>    The purpose of this is, of course, to notice regressions on VMs as soon as 
> we can, and of course, I found 
>    some regressions I needed to fix before being able to have a green build. 
> Most of them were details but: 
> 
>    * there was an important problem with +String+ primitives I needed to 
> dealt with. 
>    * there is a problem on +FFICallback+ for windows who make the test crash 
> (but callbacks works most of the time)
> 
>    There are, however, still some important problems to fix: 
> 
>    * threaded VM linux cannot be tested because they requiere changing some 
> linux configuration. 
>    * 64bits VMs still cannot be tested because I need to prepare a special 
> image for it. 
> 
>    I will try to fix some of this problems soon, but at least now we are "as 
> we were before" :)
> 
> 
> cheers! 
> Esteban


Reply via email to