Tx a lot esteban! This is so great. Showing what you are doing is important. Can you send this mail to the consortium mailing-list too?
On Mon, Jan 23, 2017 at 9:22 AM, Esteban Lorenzano <esteba...@gmail.com> wrote: > yeah, I’m aware I need to iterate on the text exporter to have some better > output :P > > Esteban > > > On 23 Jan 2017, at 09:00, esteba...@gmail.com wrote: > > > > Hello! > > > > This is my weekly ChangeLog, from 16 January 2017 to 22 January 2017. > > You can see it in a better format by going here: > http://log.smallworks.eu > > > > ChangeLog > > ========= > > > > 20 January 2017: > > ---------------- > > > > * I'm still fixing a couple of final failing tests on iceberg, > > multi-remotes branch. Problem is that there are still somethings to > understand > > on the "command line > > backend" (we need to find a better name for this), and the #pushTo: > method: if I > > do it as I > > think is correct, a couple of failing tests appear... but then, I > need to > > reflect if this is > > a problem on the functionality or on the tests. > > > > 19 January 2017: > > ---------------- > > > > * I think I finally got the problem with FT2Plugin! > > Yesterday night talking in slack I realised that there was actually > duplicated > > instances of > > FT2Handle hierarchy with exactly same handle (pointer address). > This, of > > course, causes a double free when those instances are released... and > > that's the VM crash :) > > So I quickly sketched a workaround, that you can see here: > > FT2Handle>>pvtDestroyHandle > > "This should only be sent from the finalizer. > > It runs inside a mutex because in strange cases it can happen that > this is > > executed twice, > > causing a primitiveFailed to be raised." > > self class destroyMutex critical: [ | handleToRelease | > > self isValid ifFalse: [ ^self ]. > > handleToRelease := self handle copy. > > self primDestroyHandle. > > "This is super-ugly, but it will prevent duplicated handles to be > released" > > FT2Handle allSubInstancesDo: [ :each | > > (handleToRelease = each handle) ifTrue: [ each beNull ] ] ] > > and so far nobody who is testing it crashed! > > This can be important, but of course... now we need to realise why the > > duplicated instances are happening. > > * I spent some time preparing a new way to annoy people :) > > I prepared a way to send a digest mail about my activity (this > stream) to > > pharo-dev list. > > I hope it will not be too much. > > > > 18 January 2017: > > ---------------- > > > > * ... and still some more work on iceberg, this time making some test > > pass on the command line backend (who is just a fallback, but well... > we still > > need it around). > > * Still working on UFFI 64bits. Now I introduced a new hierarchy, > FFIArchitecture > > for now with two children: > > * FFI_i386 > > * FFI_x86_64 > > the purpose is obvious: to allow UFFI to handle differences between > different > > architectures (for example, > > long has to be parsed to FFIInt32 in i386 and to FFIInt64 in x86_64). > > > > 17 January 2017: > > ---------------- > > > > * I'm working on the UFFI support for 64bits. > > In general, it works fine, but there is a huge problem with > structures. What's > > this problem? Well, let's take > > this simple structure as example: > > struct point { > > unsigned long x; > > unsigned long y; > > } > > Well, thing is in 32bits sizeof(struct point) = 8 while in 64bits > sizeof(struct > > point) = 16, and of > > course this breaks our current implementation which would be > something like this > > StructPoint>>x > > ^ handle unsignedLongAt: 1 > > StructPoint>>y > > ^ handle unsignedLongAt: 5 > > and of course, this is not correct for 64bits. > > My solution is quite simple, instead hardcoding the field offsets, I > store those > > values into class variables > > that can be calculated each session (but just once). > > So, this structure would end looking like this: > > StructPoint>>x > > ^ handle unsignedLongAt: OFFSET_X > > StructPoint>>y > > ^ handle unsignedLongAt: OFFSET_Y > > this would solve the problem for most of the cases, but there is > still the issue > > that emerges when complete > > implementation of the struct changes between platforms. I'm planning > to > > implement a strategy pattern to solve > > this, but not yet (probably I will wait until having a concrete case). > > This seems to be working, but now I have other problems not related > to UFFI: > > many people has implemented > > void * parameters of funtions as unsigned long (including me, time > ago) which > > was correct in 32bits but > > it is not in 64bits. So now I need to review this implementations to > see where a > > fix is needed. > > But this is not directly a problem of UFFI, I think. > > * I worked with Nico on fixing libgit2 backend tests for iceberg. > > Now (more thanks to Nico than me, heh), test for multi-remotes branch > are > > passing for linux but > > still not for macOS (and forget it about Pharo 5.0). > > I suspect a problem with VM, I need to review if I can configure > smalltalkci > > to work with latest vm instead stable. > > > > 15 January 2017: > > ---------------- > > > > * ... and now I restored the posix permissions to windows platform. > Next latest VM > > will have this change, I > > hope that will end the problems with FilePlugin, but we'll see. > > * I just fixed a problem with FilePlugin on macOS: the problem was when > > determining if a symlink is also a > > directory: > > ‘/tmp’ asFileReference isDirectory > > was answering false, because it is a symlink and when trying to > resolve the > > symlink to obtain the > > attributes, there was a cyclic condition that was transforming ‘/tmp’ > into > > ‘/private/tmp’ and then > > back to ‘/tmp’, and because of that the test for directory was > failing. > > > > cheers! > > Esteban > > >