Hi,

i am sorry to had overlooked this thread. So is it confirmed to be a regression ? as we have 2 opinions here. :)

Thanks.

Regards,
Chin Luh

On 23/2/2017 7:50 AM, Samuel Gougeon wrote:
Hello Antoine,

I am answering in the thread:

Le 22/02/2017 à 14:28, [email protected] a écrit :
Hello,

After some tests, it seems that Scilab 5 loads in local context "sub functions" only when you call the main function.

yes, the first time that the registered function is used.

with your sample, test1 and testa in the same test1.sci file
genlib -> load -> testa -> KO
               -> test1 -> testa -> OK
and then, next calls
-> testa -> OK


In Scilab 6, we load "sub functions" as nested functions of the main function. So they can be called in main function but after the call, they are "cleared".

It is a regression,

Really?! I am very surprised by this assertion. Some (may be many) former native Scilab .sci files have been split to work in this new way -- for instance ged.sci embedded many subfunctions that have been transfered in as many separated files (and moved to the TCL module...). And AFAIRemember, this feature was already discussed in 2015 on users@ or devs@. So, i believed, and still believe that this change is /intentional/. By the way, this new behavior has some advantages. Without it, making private functions compels to define them a) inside the calling one, and b) at its beginning. This was not very smart programming. The only way to avoid explicitly defining them at the beginning was to exec them (still at the beginning). I never run any benchmarks to compare timing of exec()uting an external definition file at run time:

function test()
  exec("mysubfunction.sci")
endfunction

versus compiling an embedded function/endfunction as well at run time:

function test()
     function mysubfunction(..)
         // Its code
    endfunction
endfunction

A priori, i would say that using an external file laying on the disk is slower than compiling things in RAM. So, imo, this change was not really expected, but it leads to a smarter programming, and likely processes subfunctions in a faster way.
So, why do you say that it is a regression ?

BR
Samuel



_______________________________________________
dev mailing list
[email protected]
http://lists.scilab.org/mailman/listinfo/dev


_______________________________________________
dev mailing list
[email protected]
http://lists.scilab.org/mailman/listinfo/dev

Reply via email to