Report 5 - 29 July 2011
Is a bit early to assume it, but mexlib already have most part of functions implemented, tested and working fine. I'm still working to pass all tests and to implement some functions.
Based on my last week schedule, I did almost which I promised. I wrote tests more tests, implemented calls to Scilab (mexEvalString and mexCallMATLAB) and figured out which functions I need to add to mex.h from last mex specs.
I'm with problems to decide how to handle memory management functions in mexlib. It is a big issue and I'm a bit stucked on it.
I started implementing some functions from last mex spec, but I guess part of them are too MATLAB specific and did not have a Scilab equivalent. All of them have been added to mex.h and I’m working on it now.
I need to decide how to implement memory management and implement some functions from last mex specs. After that, I should review all specification to see if anything differ from my implementation.
I want to document everything, mainly small differences and not completely implemented functions. It will be useful to anyone using or developing mexlib.
Unfortunately, I’m really late on my schedule. It is because I didn’t knew how huge is mexlib. If I knew better what is it, I had applied to work only to mexlib, not to do two projects like I did. I have not even thought about Python for GIWS and maybe I won’t have time to do it. Also, I had some trouble, I was able to test my implementation only after 5th week of GSoC, that caused rework on my code because I implemented some things wrong. In short, I guess I can at most start some refactor on GIWS, but it won’t be useful to anyone. Since GSoC started, Python for GIWS was considered a complement to my schedule, because mexlib was supposed to be an easy task. I prefer use my last weeks to improve mexlib, writing more tests, examples and docs.
Problems with memory management functions
I don't know how to handle mxCalloc, mxMalloc, mxRealloc and mxFree. For now, I'm just calling default CALLOC, MALLOC, REALLOC and FREE functions, but this way I don't manage the memory and can't implement persistent memory with mexMakeMemoryPersistent and mexMakeArrayPersistent and I can't free this memory when mex function is cleared.
Functions from last specs
The functions I added to mex.h to update to new mexlib API are:
- mxGetProperty, mxSetProperty
mexGet, mexSet => I don't know if Scilab has some equivalent functions
mxRemoveField => Scilab struct don't handle it
- mexErrMsgIdAndTxt, mexWarnMsgIdAndTxt
- mexIsLocked, mexLock, mexUnlock
mxCreateSparseLogicalMatrix => YaSp didn't have sparse type yet