<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">in general, this core-core functions is better to implement them as primitives. <div class="">and you put a fallback using UFFI (in case the primitive is not there).<br class=""><div>of course, your solution works… but it adds dependency with FFI-Kernel, which is also not good to have it in the bootstrap IMO.</div><div><br class=""></div><div>take a look at OSEnvironment>>getEnv implementation. </div><div><br class=""></div><div>we can go that direction and I think it will be better.</div><div><br class=""></div><div>Esteban</div><div><br class=""><blockquote type="cite" class=""><div class="">On 11 Oct 2017, at 10:27, Guillermo Polito <<a href="mailto:guillermopolito@gmail.com" class="">guillermopolito@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">Hi all,<div class=""><br class=""></div><div class="">I'd like to push a really core change in file management: the working directory. This is really needed for command line apps, when you have your app deployed in some directory and you're launching it from another one. The current implementation, where workingDirectory = imageDirectory, forces to have absolute paths or extra handling all over the place to manage this complexity.</div><div class=""><br class=""></div><div class="">Rajula proposed a couple of months ago a solution for this based on the getcwd functions. You can read in his blogpost why using getcwd is better than $PWD in general here:</div><div class=""><br class=""></div><div class=""><a href="https://vineetreddy.wordpress.com/2017/05/17/pwd-vs-getcwd/" class="">https://vineetreddy.wordpress.com/2017/05/17/pwd-vs-getcwd/</a></div><div class=""><br class=""></div><div class="">Now, since accessing the working directory is a core part of Pharo but based on UFFI, his implementation was breaking the build process. We cannot and we will not integrate UFFI in the bootstrap because it depends mainly on the compiler which is a big beast. Instead, I propose that only for this core-core-core feature, we use directly FFI.</div><div class=""><br class=""></div><div class="">In other words, the bootstrap will include just a couple of classes to manage the basics of FFI. And the working directory will be fetched by using this low level API. Such a call looks like this:</div><br class="">(ExternalLibraryFunction<br class="">    name: 'getcwd'<br class="">    module: 'libc.dylib'<br class="">    callType: 1<br class="">    returnType: ExternalType char asPointerType<br class="">    argumentTypes: {<br class="">        ExternalType char asPointerType.<br class="">        ExternalType long })<br class="">            invokeWith: buffer with: bufferSize.<div class=""><br class=""></div><div class="">We reviewed it with Pablo two days ago. The build process works with this implementation and tests are still running. The pull request is in here:</div><div class=""><br class=""></div><div class=""><a href="https://github.com/pharo-project/pharo/pull/92" class="">https://github.com/pharo-project/pharo/pull/92</a><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">Thanks,</div><div class="">Guille, Pablo and Rajula</div><div class=""><div class=""><br class=""></div>-- <br class=""><div class="gmail_signature"><div dir="ltr" class=""><div class=""><div dir="ltr" class=""><table cellspacing="0" cellpadding="0" style="border-collapse:collapse" class="">
<tbody class="">
<tr class="">
<td valign="top" style="width:86px;height:84px;border-style:solid;border-width:0px 1px 0px 0px;border-color:transparent rgb(0,0,0) transparent transparent;padding:4px" class=""><div style="margin: 0px; min-height: 14px;" class=""><font face="Helvetica" style="font-stretch: normal; font-size: 10px; line-height: normal; font-family: Helvetica;" class=""> </font><span style="font-family:Helvetica;font-size:10px" class=""> </span><span style="font-family:Helvetica;font-size:10px" class=""> </span><img src="https://www.cristal.univ-lille.fr//videos/presentation.jpg" width="200" height="112" class=""><img src="https://intranet.cnrs.fr/Cnrs_pratique/communiquer/guides/PublishingImages/CNRS-filaire-Bichro-CMJN.jpg" alt="" style="font-size: 12.8px; margin: 5px;" width="96" height="96" class=""></div>















</td><td valign="top" style="width:378px;height:84px;border-style:solid;border-width:0px 0px 0px 1px;border-color:transparent transparent transparent rgb(0,0,0);padding:4px" class=""><div style="margin: 0px;" class=""><font face="Helvetica" style="font-stretch: normal; font-size: 10px; line-height: normal; font-family: Helvetica;" class="">Guille Polito</font></div><div style="margin: 0px;" class=""><span style="font-family: Helvetica; font-size: 10px;" class="">Research Engineer</span></div><p style="margin: 0px; font-stretch: normal; font-size: 10px; line-height: normal; font-family: Helvetica; min-height: 10px;" class=""><font class=""></font><br class="webkit-block-placeholder"></p><div style="margin: 0px;" class=""><font face="Helvetica" style="font-stretch: normal; font-size: 10px; line-height: normal; font-family: Helvetica;" class="">Centre de Recherche en Informatique, Signal et Automatique de Lille</font></div><div style="margin: 0px;" class=""><font face="Helvetica" style="font-stretch: normal; font-size: 10px; line-height: normal; font-family: Helvetica;" class="">CRIStAL - UMR 9189</font></div><div style="margin: 0px;" class=""><font face="Helvetica" style="font-stretch: normal; font-size: 10px; line-height: normal; font-family: Helvetica;" class="">French National Center for Scientific Research - <font class=""><u class=""><a href="http://www.cnrs.fr/" target="_blank" class="">http://www.cnrs.fr</a></u></font></font></div><div style="margin: 0px; font-stretch: normal; font-size: 10px; line-height: normal; font-family: Helvetica; min-height: 10px;" class=""><br class=""></div><div style="margin: 0px;" class=""><font face="Helvetica" style="font-stretch: normal; font-size: 10px; line-height: normal; font-family: Helvetica;" class=""><b class="">Web:</b> <a href="http://guillep.github.io/" target="_blank" class=""><font class=""><u class="">http://guillep.github.io</u></font></a></font></div><div style="margin: 0px;" class=""><font face="Helvetica" style="font-stretch: normal; font-size: 10px; line-height: normal; font-family: Helvetica;" class=""><b class="">Phone: </b>+33 06 52 70 66 13</font></div>
</td>
</tr>
</tbody>
</table></div></div></div></div>
</div></div>
</div></blockquote></div><br class=""></div></body></html>