<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2016-07-06 9:04 GMT+02:00 marcel.taeumel <span dir="ltr">&lt;<a href="mailto:Marcel.Taeumel@hpi.de" target="_blank">Marcel.Taeumel@hpi.de</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Eliot Miranda-2 wrote<br>
&gt; Hi All,<br>
&gt;<br>
&gt; On Tue, Jul 5, 2016 at 8:06 AM, Nicolas Cellier &lt;<br>
<br>
&gt; nicolas.cellier.aka.nice@<br>
<br>
&gt;&gt; wrote:<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; 2016-07-05 15:40 GMT+02:00 marcel.taeumel &amp;lt;<br>
<br>
&gt; Marcel.Taeumel@<br>
<br>
&gt; &amp;gt;:<br>
<div><div class="h5">&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Nicolas Cellier wrote<br>
&gt;&gt;&gt; &gt; I don&#39;t promise to spend any time on it, but I&#39;ve inquired a bit a few<br>
&gt;&gt;&gt; &gt; months ago.<br>
&gt;&gt;&gt; &gt; The 1st thing required is to convert a bunch of (int) type declaration<br>
&gt;&gt;&gt; &gt; into<br>
&gt;&gt;&gt; &gt; sqint in platforms/win32 because they&#39;re not compatible in 64bits.<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; 2016-07-05 11:20 GMT+02:00 marcel.taeumel &amp;lt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt; Marcel.Taeumel@<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt; &amp;gt;:<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; Hi, there.<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; I happily observe the recent efforts to make 64-bit VMs stable for<br>
&gt;&gt;&gt; Linux<br>
&gt;&gt;&gt; &gt;&gt; and<br>
&gt;&gt;&gt; &gt;&gt; Mac OSX.<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; Although Tobias and myself agreed to support the Windows platform in<br>
&gt;&gt;&gt; &gt;&gt; terms<br>
&gt;&gt;&gt; &gt;&gt; of internal and external plugins such as SqueakSSL and FilePlugin,<br>
&gt;&gt;&gt; adding<br>
&gt;&gt;&gt; &gt;&gt; 64-bit seems like a lot of work. We have only so much time.<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; Who&#39;s out there interested in, thinking about, or already<br>
&gt;&gt;&gt; contributing<br>
&gt;&gt;&gt; to<br>
&gt;&gt;&gt; &gt;&gt; a<br>
&gt;&gt;&gt; &gt;&gt; 64-bit OpenSmalltalk VM for Windows?<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; Best,<br>
&gt;&gt;&gt; &gt;&gt; Marcel<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; --<br>
&gt;&gt;&gt; &gt;&gt; View this message in context:<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; <a href="http://forum.world.st/Poll-Who-is-interested-in-thinking-about-or-already-contributing-to-a-64-bit-OpenSmalltalk-VM-for-Wi-tp4904953.html" rel="noreferrer" target="_blank">http://forum.world.st/Poll-Who-is-interested-in-thinking-about-or-already-contributing-to-a-64-bit-OpenSmalltalk-VM-for-Wi-tp4904953.html</a><br>
&gt;&gt;&gt; &gt;&gt; Sent from the Squeak VM mailing list archive at Nabble.com.<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Hi Nicolas,<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt; Hi Marcel,<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;&gt; if we target Cygwin as a build environment, this might be worth<br>
&gt;&gt;&gt; noticing:<br>
&gt;&gt;&gt; <a href="https://cygwin.com/faq.html#faq.programming.64bitporting" rel="noreferrer" target="_blank">https://cygwin.com/faq.html#faq.programming.64bitporting</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt; As currently generated, the Spur Vm for 64 bits expects sizeof(long) ==<br>
&gt;&gt; 8.<br>
&gt;&gt; So it is cygwin64 x86_64 compatible, but not so much MSVC... (or<br>
&gt;&gt; mingw-w64<br>
&gt;&gt; variants...)<br>
&gt;&gt; IMO, this is the easiest target. then we could inquire about alternate<br>
&gt;&gt; compilers.<br>
&gt;&gt;<br>
&gt;<br>
</div></div>&gt; This is great to hear.  So there is a model where sizeof(long) == 8?  If<br>
&gt; that&#39;s so, we should target it.  There&#39;s a /lot/ of work to do if we have<br>
&gt; to support the Win64 sizeof(long) == 4 model.<br>
<span class="">&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;&gt; If we (eventually?) target MS Visual Studio (resp. its C compiler), the<br>
&gt;&gt;&gt; code<br>
&gt;&gt;&gt; might look different. Not sure.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; In the Windows (kernel) code, I noticed the use of typedefs, which we<br>
&gt;&gt;&gt; could<br>
&gt;&gt;&gt; also establish in the vm&#39;s windows-specific platform code:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/ff381404(v=vs.85).aspx" rel="noreferrer" target="_blank">https://msdn.microsoft.com/en-us/library/windows/desktop/ff381404(v=vs.85).aspx</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt; I wonder if we could manage to write code that compiles in both Cygwin<br>
&gt;&gt;&gt; 64-bit and the (free) MS Visual C/C++ compiler:<br>
&gt;&gt;&gt; <a href="https://www.microsoft.com/en-us/download/details.aspx?id=41151" rel="noreferrer" target="_blank">https://www.microsoft.com/en-us/download/details.aspx?id=41151</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt; Yes, it&#39;s doable, it&#39;s a matter of defining the sq* types and sticking to<br>
&gt;&gt; these types.<br>
&gt;&gt; But that might mean revising VMMaker package to avoid direct references<br>
&gt;&gt; to<br>
&gt;&gt; long/unsigned long/, as well as some of the platforms/* files...<br>
&gt;&gt;<br>
&gt;<br>
</span>&gt; There ar emote issues in the type inferencer.  It, and a significant<br>
&gt; ammount of code in VMMaker would have to be rewritten to support 64-bit<br>
&gt; sizeof(long) == 4.  I think it&#39;s infeasible given our current person<br>
&gt; power,<br>
&gt; and I don&#39;t think its wrath it.  If we can get there using cygwin ad/or<br>
&gt; mingw we should do so.<br>
<span class="">&gt;<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;&gt; ... or maybe MS Visual C/C++ only? It would remove Cygwin as a layer of<br>
&gt;&gt;&gt; indirection between dev tools and execution platform...  *duck-and-run*<br>
&gt;&gt;&gt; :-D<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt; Using MSVC requires additional support like atomic operations (see<br>
&gt;&gt; ../../platforms/Cross/vm/sqAtomicOps.h)<br>
&gt;&gt;<br>
&gt;<br>
</span>&gt; Minor difficulty.  MSVC has support for asm.  Further, later versions are<br>
&gt; using clang for their compiler and that *may* just have extended asm<br>
&gt; support.  And do we know that MSVC doesn&#39;t support the relevant<br>
&gt; intrinsics?<br>
<span class="">&gt;<br>
&gt; Overall, it should be really simple (and cheap?) to setup a Windows dev<br>
&gt;&gt;&gt; environment for VM developers. Maybe for real, maybe in a VirtualBox<br>
&gt;&gt;&gt; only.<br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
</span>&gt; +1.  Please, something that is either arasllels or can be converted into<br>
&gt; Parallels.<br>
<span class="">&gt;<br>
&gt;<br>
&gt;&gt; This helps Eliot and other cross-platform VM developers to debug like<br>
&gt;&gt; they<br>
&gt;&gt;&gt; are doing now.<br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Using IDE has a lot of advantages, but maintaining the IDE-specific or<br>
&gt;&gt; even worse IDE-version-specific project files is not sustainable<br>
&gt;&gt; For these reasons, Eliot removed the Xcode projects for Mac, I don&#39;t<br>
&gt;&gt; think<br>
&gt;&gt; re-introducing them for windows would be a good idea.<br>
&gt;&gt; Instead, I much much prefer to generate the project files via cmake.<br>
&gt;&gt;<br>
&gt;<br>
</span><span class="">&gt; Why do we need project files?  Why do we need cmake?  I don&#39;t want to keep<br>
&gt; on fighting this battle, please.  Esteban is already working on the issue<br>
&gt; of generating the header file that generates just the defines that<br>
&gt; describe<br>
&gt; the platform facilities.  Plugins are selected via <a href="http://plugins.int" rel="noreferrer" target="_blank">plugins.int</a> and<br>
&gt; plugins.ext.  Optional compilation can be controlled with the relevant<br>
&gt; code<br>
&gt; in platforms/PLATFORM/plugins/Makefile which can test for available<br>
&gt; support<br>
&gt; libraries and abort creation if so.<br>
&gt;<br>
&gt; We. Do. Not. Need/ A. CMake. Step. Other, Than. To. Define. The.<br>
&gt; Platform&#39;s. Facilities.<br>
&gt;<br>
&gt; I. Do. Not. Want. Project. Files. Under. Any. Circumstances.<br>
&gt;<br>
&gt; Please, I thought we had reached agreement on this when we discussed<br>
&gt; moving<br>
&gt; to github.<br>
&gt;<br>
&gt;<br>
</span><span class="">&gt;&gt; The question remains whether we maintain the cmakelists.txt or generate<br>
&gt;&gt; them from Smalltalk (like Pharo VM)<br>
&gt;&gt;<br>
&gt;&gt; I like the idea of a virtual machine prepared for dev, but what about:<br>
&gt;&gt; - license (unless we can redistribute windows 10?)<br>
&gt;&gt; - security (download a virtual machine with unknown installed software,<br>
&gt;&gt; backdoors, etc... )<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;&gt; Best,<br>
&gt;&gt;&gt; Marcel<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; --<br>
&gt;&gt;&gt; View this message in context:<br>
&gt;&gt;&gt; <a href="http://forum.world.st/Poll-Who-is-interested-in-thinking-about-or-already-contributing-to-a-64-bit-OpenSmalltalk-VM-for-Wi-tp4904953p4905015.html" rel="noreferrer" target="_blank">http://forum.world.st/Poll-Who-is-interested-in-thinking-about-or-already-contributing-to-a-64-bit-OpenSmalltalk-VM-for-Wi-tp4904953p4905015.html</a><br>
&gt;&gt;&gt; Sent from the Squeak VM mailing list archive at Nabble.com.<br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
</span>&gt; _,,,^..^,,,_<br>
&gt; best, Eliot<br>
<br>
Hi,<br>
<br>
oh, I did not explain it sufficiently what I mean by saying &quot;dev<br>
environment&quot;. I did not mean putting project files into the repository or<br>
using cmake. No, no, no. I mean a simple document that says how to install<br>
and configure Cygwin or Visual Studio to setup the project. There is imo no<br>
urgent need to provide ready-made project files. A documentation about paths<br>
and compiler flags would be a good first step.<br>
<br>
Best,<br>
Marcel<br>
<br>
<br></blockquote><div>OK my bad, I think i missunderstood.<br></div><div>Still, an IDE does boost productivity, especially when navigating from error messages to source code for example when porting win32 to x64...<br>we don&#39;t develop in Smalltalk with vi. But let this apart, it&#39;s another thread. With a mixture of SourceTree / WinMerge / cygwin bash ./mvm -f ; less LOGF ; grep -r x86_64 ../../platforms / vim / Notepad++ etc... I&#39;ve got an ersatz of IDE ;)<br><br></div><div>I&#39;ve cherry picked a few changes required for compiling a X86_64 windows versions and pushed to main cog branch.<br></div><div>There are many others waiting, but I don&#39;t want to commit a massive blob, so I&#39;ll continue to slowly decompose if it&#39;s ok.<br></div><div>Fortunately the win32 flavour should continue to compile, so I didn&#39;t open a separate feature branch (if it lasts too long I fear it would require many rebase and/or merge and that would be boring).<br><br></div><div>Reviews are welcome.<br><br></div><div>cheers<br></div><div> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
--<br>
View this message in context: <a href="http://forum.world.st/Poll-Who-is-interested-in-thinking-about-or-already-contributing-to-a-64-bit-OpenSmalltalk-VM-for-Wi-tp4904953p4905088.html" rel="noreferrer" target="_blank">http://forum.world.st/Poll-Who-is-interested-in-thinking-about-or-already-contributing-to-a-64-bit-OpenSmalltalk-VM-for-Wi-tp4904953p4905088.html</a><br>
<div class="HOEnZb"><div class="h5">Sent from the Squeak VM mailing list archive at Nabble.com.<br>
</div></div></blockquote></div><br></div></div>