Branch: refs/heads/Cog
Home: https://github.com/OpenSmalltalk/opensmalltalk-vm
Commit: b8cff0d1fcb6f31032e48eaa612455fdb901db10
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/b8cff0d1fcb6f31032…
Author: Eliot Miranda <eliot.miranda(a)gmail.com>
Date: 2020-04-03 (Fri, 03 Apr 2020)
Changed paths:
M build.win64x64/common/Makefile.msvc.flags
M build.win64x64/common/Makefile.msvc.plugin
M build.win64x64/common/Makefile.msvc.tools
Log Message:
-----------
Commit MSVC makefiles so that settings for tools are in Makefile.msvc.tools.
This prior to attempting to use CLang/C2.
Commit: 3b6e56928ee0677a52c77177f8f0d7332ec975cc
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/3b6e56928ee0677a52…
Author: Eliot Miranda <eliot.miranda(a)gmail.com>
Date: 2020-04-03 (Fri, 03 Apr 2020)
Changed paths:
M build.win64x64/common/MAKEASSERT.BAT
M build.win64x64/common/MAKEDEBUG.BAT
M build.win64x64/common/MAKEFAST.BAT
M build.win64x64/common/Makefile.msvc
M build.win64x64/common/Makefile.msvc.flags
M build.win64x64/common/Makefile.msvc.tools
Log Message:
-----------
Commit prior to testing -D etc for MSVC, in preparation for move to CLangC2.
Commit: 9827e12342e02bde36e74175c5a928207596ac13
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/9827e12342e02bde36…
Author: Eliot Miranda <eliot.miranda(a)gmail.com>
Date: 2020-04-03 (Fri, 03 Apr 2020)
Changed paths:
M nsspur64src/vm/cointerp.c
M nsspur64src/vm/cointerp.h
M nsspur64src/vm/gcc3x-cointerp.c
M nsspursrc/vm/cointerp.c
M nsspursrc/vm/cointerp.h
M nsspursrc/vm/gcc3x-cointerp.c
M spur64src/vm/cointerp.c
M spur64src/vm/cointerp.h
M spur64src/vm/cointerpmt.c
M spur64src/vm/cointerpmt.h
M spur64src/vm/gcc3x-cointerp.c
M spur64src/vm/gcc3x-cointerpmt.c
M spurlowcode64src/vm/cointerp.c
M spurlowcode64src/vm/cointerp.h
M spurlowcode64src/vm/gcc3x-cointerp.c
M spurlowcodesrc/vm/cointerp.c
M spurlowcodesrc/vm/cointerp.h
M spurlowcodesrc/vm/gcc3x-cointerp.c
M spursista64src/vm/cointerp.c
M spursista64src/vm/cointerp.h
M spursista64src/vm/gcc3x-cointerp.c
M spursistasrc/vm/cointerp.c
M spursistasrc/vm/cointerp.h
M spursistasrc/vm/gcc3x-cointerp.c
M spursrc/vm/cointerp.c
M spursrc/vm/cointerp.h
M spursrc/vm/cointerpmt.c
M spursrc/vm/cointerpmt.h
M spursrc/vm/gcc3x-cointerp.c
M spursrc/vm/gcc3x-cointerpmt.c
M src/vm/cointerp.c
M src/vm/cointerp.h
M src/vm/cointerpmt.c
M src/vm/cointerpmt.h
M src/vm/gcc3x-cointerp.c
M src/vm/gcc3x-cointerpmt.c
Log Message:
-----------
Merge branch 'Cog' of https://github.com/OpenSmalltalk/opensmalltalk-vm into Cog
Commit: ff5d0f4f83c94ec8d520df8405d0d11c6659ce32
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/ff5d0f4f83c94ec8d5…
Author: Eliot Miranda <eliot.miranda(a)gmail.com>
Date: 2020-04-06 (Mon, 06 Apr 2020)
Changed paths:
M .git_filters/RevDateURL.clean
M .git_filters/RevDateURL.smudge
Log Message:
-----------
Merge branch 'Cog' of https://github.com/OpenSmalltalk/opensmalltalk-vm into Cog
Commit: 8a8745b4eafaf20ae1d4d896c8ead7f36f32216a
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/8a8745b4eafaf20ae1…
Author: Eliot Miranda <eliot.miranda(a)gmail.com>
Date: 2020-04-06 (Mon, 06 Apr 2020)
Changed paths:
M build.win64x64/common/Makefile.msvc
A build.win64x64/common/Makefile.msvc.clang.rules
M build.win64x64/common/Makefile.msvc.flags
A build.win64x64/common/Makefile.msvc.msvc.rules
M build.win64x64/common/Makefile.msvc.plugin
M build.win64x64/common/Makefile.msvc.rules
M build.win64x64/common/Makefile.msvc.tools
M platforms/win32/plugins/FloatMathPlugin/Makefile.msvc
M platforms/win32/vm/version.c
Log Message:
-----------
Update the MSVC makefiles to be able to use ClangC2 (Clang front-end, MSVC
back end) instead of MSVC. [ci skip]
Commit: 07c58984196882c3e50a2f620eec4567676ab38f
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/07c58984196882c3e5…
Author: Eliot Miranda <eliot.miranda(a)gmail.com>
Date: 2020-04-06 (Mon, 06 Apr 2020)
Changed paths:
M build.win32x86/common/Makefile.msvc
A build.win32x86/common/Makefile.msvc.clang.rules
M build.win32x86/common/Makefile.msvc.flags
A build.win32x86/common/Makefile.msvc.msvc.rules
M build.win32x86/common/Makefile.msvc.plugin
M build.win32x86/common/Makefile.msvc.rules
M build.win32x86/common/Makefile.msvc.tools
M build.win64x64/common/Makefile.msvc
M build.win64x64/common/Makefile.msvc.flags
M build.win64x64/common/Makefile.msvc.tools
Log Message:
-----------
Update the 32-bit win32 MSVC makefiles to allow ClangC2 use.
Commit: d99bf29773321f5b923b3002681ac1c85dc682ba
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/d99bf29773321f5b92…
Author: Eliot Miranda <eliot.miranda(a)gmail.com>
Date: 2020-04-06 (Mon, 06 Apr 2020)
Changed paths:
M build.win32x86/common/Makefile.msvc.flags
Log Message:
-----------
Add an unsuccessfl attempt to allow CLangC2 o build the 32-bit VM (can't get
GNU Make to compute the right path). [ci skip]
Compare: https://github.com/OpenSmalltalk/opensmalltalk-vm/compare/9191db9b80d3...d9…
Branch: refs/heads/Cog
Home: https://github.com/OpenSmalltalk/opensmalltalk-vm
Commit: e8d286f965dfb8d3fb6c9ad459439ae132797fcf
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/e8d286f965dfb8d3fb…
Author: Tobias Pape <tobias(a)netshed.de>
Date: 2020-04-06 (Mon, 06 Apr 2020)
Changed paths:
M .git_filters/RevDateURL.clean
M .git_filters/RevDateURL.smudge
Log Message:
-----------
Improve git filter compatibility
FreeBSD does not have perl in /usr/bin.
Nor does it need to, the Linux FHS does not apply.
Get around that with /usr/bin/env and env -S
[ci skip]
Attempt to create a pull request for GIT branch "solaris" to COG.
You can view, comment on, or merge this pull request online at:
https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/479
-- Commit Summary --
* Solaris fixes. Add build.sunos32x86
* Add build.sunosamd64 for 64bit on Solaris
* Add Solaris IPS manifest.
* Change docdir from /usr/doc to /usr/share/doc. Set version to 5.3.1
* Update IPS manifest for version 5.3.1. Include doc/LICENSE.gz file.
* Compilation SunPro sqUnixITimerHeartbeat
* Use FASYNC on __sun__ instead of FIOASYNC
* Put back VM_VERSION to 5.0
* IPS manifest used for squeak5(a)5.3.1
* Define MIX / MAX so that vm-sound-pulse.so loads.
* make vm-sound-pulse the default
* Compile on Solaris with --disable-dynamicopenssl
* Compile on Solaris with --disable-dynamicopenssl
* Include opensslv to define OPENSSL_VERSION_NUMBER
-- File Changes --
A build.sunos32x86/HowToBuild (119)
A build.sunos32x86/squeak.cog.spur/build/mvm (40)
A build.sunos32x86/squeak.cog.spur/plugins.ext (16)
A build.sunos32x86/squeak.cog.spur/plugins.int (38)
A build.sunosamd64/HowToBuild (145)
A build.sunosamd64/squeak.cog.spur/build.itimerheartbeat/mvm (32)
A build.sunosamd64/squeak.cog.spur/build/mvm (39)
A build.sunosamd64/squeak.cog.spur/plugins.ext (16)
A build.sunosamd64/squeak.cog.spur/plugins.int (38)
A build.sunosamd64/squeak.cog.spur/squeak5.p5m (34)
A build.sunosamd64/squeak.cog.spur/squeak5.p5m.res (4)
M platforms/Cross/plugins/IA32ABI/ia32abicc.c (4)
M platforms/Cross/plugins/IA32ABI/x64sysvabicc.c (2)
M platforms/Cross/vm/sqAtomicOps.h (7)
M platforms/Cross/vm/sqMemoryFence.h (2)
M platforms/unix/config/make.cfg.in (2)
M platforms/unix/plugins/SqueakSSL/openssl_overlay.h (5)
M platforms/unix/plugins/SqueakSSL/sqUnixOpenSSL.inc (9)
M platforms/unix/vm-sound-pulse/sqUnixSoundPulseAudio.c (7)
M platforms/unix/vm/aio.c (1)
M platforms/unix/vm/include_ucontext.h (4)
M platforms/unix/vm/sqUnixExternalPrims.c (8)
M platforms/unix/vm/sqUnixHeartbeat.c (4)
M platforms/unix/vm/sqUnixITimerHeartbeat.c (4)
M platforms/unix/vm/sqUnixMain.c (5)
M scripts/checkSCCSversion (2)
-- Patch Links --
https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/479.patchhttps://github.com/OpenSmalltalk/opensmalltalk-vm/pull/479.diff
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/479
Hi Trygve,
> On Apr 5, 2020, at 2:47 AM, Trygve Reenskaug <trygver(a)ifi.uio.no> wrote:
>
> I'm struggling with a new .image3 extension. It seems that Squeak Cog Spur Virtual Machine actually KNOWS that all images have the .image extension. This seems to mean that I can't run two different Squeak generation images within the same OS instance.
there’s no restriction on running multiple kinds of image or multiple images or multiple instances of the same image. One can always drop an image on the right vm, or manually launch a specific vm with a specific in a shell.
The issue is only having double clicking select an appropriate vm for the image, and for that you’re right that one needs a wrapper.
Pharo has a wrapper implemented in Smalltalk, PharoLauncher, that could be adapted. VisualWorks has a small wrapper and an ini file, VisualWorks.exe & VisualWorks.ini IIRC (know it? I wrote it).
It wouldn’t be hard to implement the wrapper solution. I’ll try and get that done in the next few days. But then it has to get pushed through to production, to be built using some kind of CI. And of course it makes sense on all platforms.
>
> I'll try running my 3.10.2 under Cog Spur Virtual Machine. I hope it works.
It won’t. Spur 32-bit VMs are the only VMs that can run 32-bit Spur images, Spur 64-bit VMs are the only VMs that can run 64-bit Spur images, etc. it isn’t just a matter of converting each individual object. There are bytecode set, closure design, identity hash and object enumeration method, and other Smalltalk-level differences that mean automatically converting images is impossible.
Converting between 32-bit and 64-bit Spur images *is* automatable and there is a program (a Spur image) I should package up to do it. But it takes a few seconds and requires VMMaker, so it is not small, and so is not something to add the the vm and have some images takes seconds to launch instead of milliseconds.
>
>
> On 04-Apr-20 9:13 PM, tim Rowledge wrote:
>> We were discussing this with regard to the 5.3 release but didn't have time to sort out. Having a wrapper that checks the image file format and picks the right vm is not in principle difficult; we just need someone to write it.
>>
>> The unix package for example already has a shell script that does a fair bit of fiddle-faddle. Adding use of the image format command wouldn't make a lot of difference.
>>
>> tim
>> --
>> tim Rowledge; tim(a)rowledge.org; http://www.rowledge.org/tim
>> "Virtual Memory" means never knowing where your next byte is coming from.
>>
>>
>>
>>
>>
>
> --
> The essence of object orientation is that objects collaborate to achieve a goal.
> Trygve Reenskaug mailto: trygver(a)ifi.uio.no
> Morgedalsvn. 5A http://folk.uio.no/trygver/
> N-0378 Oslo http://fullOO.info
> Norway Tel: (+47) 22 49 57 27
>
Branch: refs/heads/Cog
Home: https://github.com/OpenSmalltalk/opensmalltalk-vm
Commit: 6e2df0d0fccc19a810dffd4fa109a2b9097bb828
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/6e2df0d0fccc19a810…
Author: Eliot Miranda <eliot.miranda(a)gmail.com>
Date: 2020-04-03 (Fri, 03 Apr 2020)
Changed paths:
M nsspur64src/vm/cointerp.c
M nsspur64src/vm/cointerp.h
M nsspur64src/vm/gcc3x-cointerp.c
M nsspursrc/vm/cointerp.c
M nsspursrc/vm/cointerp.h
M nsspursrc/vm/gcc3x-cointerp.c
M spur64src/vm/cointerp.c
M spur64src/vm/cointerp.h
M spur64src/vm/cointerpmt.c
M spur64src/vm/cointerpmt.h
M spur64src/vm/gcc3x-cointerp.c
M spur64src/vm/gcc3x-cointerpmt.c
M spurlowcode64src/vm/cointerp.c
M spurlowcode64src/vm/cointerp.h
M spurlowcode64src/vm/gcc3x-cointerp.c
M spurlowcodesrc/vm/cointerp.c
M spurlowcodesrc/vm/cointerp.h
M spurlowcodesrc/vm/gcc3x-cointerp.c
M spursista64src/vm/cointerp.c
M spursista64src/vm/cointerp.h
M spursista64src/vm/gcc3x-cointerp.c
M spursistasrc/vm/cointerp.c
M spursistasrc/vm/cointerp.h
M spursistasrc/vm/gcc3x-cointerp.c
M spursrc/vm/cointerp.c
M spursrc/vm/cointerp.h
M spursrc/vm/cointerpmt.c
M spursrc/vm/cointerpmt.h
M spursrc/vm/gcc3x-cointerp.c
M spursrc/vm/gcc3x-cointerpmt.c
M src/vm/cointerp.c
M src/vm/cointerp.h
M src/vm/cointerpmt.c
M src/vm/cointerpmt.h
M src/vm/gcc3x-cointerp.c
M src/vm/gcc3x-cointerpmt.c
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.2738
CoInterpreter: small tweak for VMMaker.oscog-eem.2737. On every entry to
interpret avoid checking CReturnAddress and simply assign it. Once set its
value never changes, so an unchecked write will be faster and takes less code.
Commit: 3cf2362cff617d3fdbc26a2e5b47b35a567b26e5
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/3cf2362cff617d3fdb…
Author: Eliot Miranda <eliot.miranda(a)gmail.com>
Date: 2020-04-03 (Fri, 03 Apr 2020)
Changed paths:
M build.win32x86/common/Makefile.msvc
M build.win32x86/common/Makefile.msvc.plugin
M build.win64x64/common/Makefile.msvc
M build.win64x64/common/Makefile.msvc.plugin
Log Message:
-----------
Merge branch 'Cog' of https://github.com/OpenSmalltalk/opensmalltalk-vm into Cog
Compare: https://github.com/OpenSmalltalk/opensmalltalk-vm/compare/8d2169219fa3...3c…
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2738.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.2738
Author: eem
Time: 3 April 2020, 3:59:56.137049 pm
UUID: f6958436-d66a-477c-bbcb-4b6586462abe
Ancestors: VMMaker.oscog-eem.2737
CoInterpreter: small tweak for VMMaker.oscog-eem.2737. On every entry to interpret avoid checking CReturnAddress and simply assign it. Once set its value never changes, so an unchecked write will be faster and takes less code.
Simulation: make the simulator's close method a little more robust.
=============== Diff against VMMaker.oscog-eem.2737 ===============
Item was changed:
----- Method: CoInterpreter>>interpret (in category 'interpreter shell') -----
interpret
"This is the main interpreter loop.
In a pure interpreter it loops forever, fetching and executing bytecodes.
With the Cogit JIT executing code as well, the interpreter is reentered from machine code
whenever the machine code wants to interpret a method instead of executing its machine
code. Entry into the interpreter is done via a ''jump call'' in machine code that uses
CFramePointer and CStackPointer to find the base of the C stack (set in CoInterpreter>>
enterSmalltalkExecutiveImplementation) and substitutes CReturnAddress as the return
address in the code so it always appears that interpret has been called from
CoInterpreter>>enterSmalltalkExecutiveImplementation, which may be important to,
for example, C exception handling inside the VM.
When running in the context of a browser plugin VM the interpreter must return control
to the browser periodically. This should done only when the state of the currently running
Squeak thread is safely stored in the object heap. Since this is the case at the moment
that a check for interrupts is performed, that is when we return to the browser if it is time
to do so. Interrupt checks happen quite frequently."
<inline: false>
"If stacklimit is zero then the stack pages have not been initialized."
stackLimit = 0 ifTrue:
[^self initStackPagesAndInterpret].
+ "An unchecked write is probably faster, so instead of
+ CReturnAddress ifNil:
+ [CReturnAddress := self cCoerceSimple: self getReturnAddress to: #usqIntptr_t]
+ we have simply"
+ self assert: (CReturnAddress isNil or: [CReturnAddress = self getReturnAddress]).
+ CReturnAddress := self cCoerceSimple: self getReturnAddress to: #usqIntptr_t.
- CReturnAddress ifNil:
- [CReturnAddress := self cCoerceSimple: self getReturnAddress to: #usqIntptr_t].
"record entry time when running as a browser plug-in"
self browserPluginInitialiseIfNeeded.
self internalizeIPandSP.
self initExtensions.
self fetchNextBytecode.
[true] whileTrue: [self dispatchOn: currentBytecode in: BytecodeTable].
localIP := localIP - 1. "undo the pre-increment of IP before returning"
self externalizeIPandSP.
^nil!
Item was changed:
----- Method: CogVMSimulator>>close (in category 'initialization') -----
close "close any files that ST may have opened, etc"
pluginList do: [:assoc| | plugin | plugin := assoc value. plugin ~~ self ifTrue: [plugin close]].
"Ugh; at least some of this code belongs in the UI..."
World submorphs do:
[:submorph|
(submorph model isVMObjectInspector
and: [submorph model coInterpreter == self]) ifTrue:
[submorph delete].
(submorph model isDebugger
+ and: [(submorph model interruptedProcess suspendedContext ifNotNil:
+ [:sctxt|
+ sctxt findContextSuchThat:
- and: [(submorph model interruptedProcess suspendedContext findContextSuchThat:
[:ctxt|
(ctxt receiver == cogit
and: [ctxt selector == #simulateCogCodeAt:])
or: [ctxt receiver == self
+ and: [ctxt selector == #interpret]]]]) notNil]) ifTrue:
- and: [ctxt selector == #interpret]]]) notNil]) ifTrue:
[submorph model windowIsClosing.
submorph delete]]!
Item was changed:
----- Method: CogVMSimulator>>interpret (in category 'interpreter shell') -----
interpret
"This is the main interpreter loop. It normally loops forever, fetching and executing bytecodes.
When running in the context of a web browser plugin VM, however, it must return control to the
web browser periodically. This should done only when the state of the currently running Squeak
thread is safely stored in the object heap. Since this is the case at the moment that a check for
interrupts is performed, that is when we return to the browser if it is time to do so. Interrupt
checks happen quite frequently.
Override for simulation to insert bytecode breakpoint support."
"If stacklimit is zero then the stack pages have not been initialized."
stackLimit = 0 ifTrue:
[^self initStackPagesAndInterpret].
+
+ "An unchecked write is probably faster, so instead of
+ CReturnAddress ifNil:
+ [CReturnAddress := self cCoerceSimple: self getReturnAddress to: #usqIntptr_t]
+ we have simply"
+ self assert: (CReturnAddress isNil or: [CReturnAddress = self getReturnAddress]).
+ CReturnAddress := self cCoerceSimple: self getReturnAddress to: #usqIntptr_t.
+
- CReturnAddress ifNil:
- [CReturnAddress := self cCoerceSimple: self getReturnAddress to: #usqIntptr_t].
self useCogitBreakBlockIfNone.
"record entry time when running as a browser plug-in"
self browserPluginInitialiseIfNeeded.
self internalizeIPandSP.
self initExtensions.
self fetchNextBytecode.
[true] whileTrue:
[self assertValidExecutionPointers.
atEachStepBlock value. "N.B. may be nil"
self dispatchOn: currentBytecode in: BytecodeTable.
self incrementByteCount].
localIP := localIP - 1. "undo the pre-increment of IP before returning"
self externalizeIPandSP.
^nil
!
Item was changed:
----- Method: StackInterpreterSimulator>>close (in category 'initialization') -----
close "close any files that ST may have opened, etc"
pluginList do: [:assoc| | plugin | plugin := assoc value. plugin ~~ self ifTrue: [plugin close]].
"Ugh; at least some of this code belongs in the UI..."
World submorphs do:
[:submorph|
(submorph model isVMObjectInspector
and: [submorph model coInterpreter == self]) ifTrue:
[submorph delete].
(submorph model isDebugger
+ and: [(submorph model interruptedProcess suspendedContext ifNotNil:
+ [:sctxt|
+ sctxt findContextSuchThat:
- and: [(submorph model interruptedProcess suspendedContext findContextSuchThat:
[:ctxt|
ctxt receiver == self
+ and: [ctxt selector == #run]]]) notNil]) ifTrue:
- and: [ctxt selector == #run]]) notNil]) ifTrue:
[submorph model windowIsClosing.
submorph delete]]!
VM: 5.0 branch 'solaris'
In the file platforms/vm/sqUnixMain.c there is a list of vm-sound- plugins
to try.
In my case on Solaris the vm-sound-pulse works best for me, so I've put it
first in the list:
{ &soundModule, "sound", "pulse" },
{ &soundModule, "sound", "OSS" },
{ &soundModule, "sound", "MacOSX" },
{ &soundModule, "sound", "Sun" },
{ &soundModule, "sound", "ALSA" },
{ &soundModule, "sound", "null" },
The vm-sound-OSS also works well. The vm-sound-Sun does not work for me,
but I think it is old code for Sun SPARC so I should test it sometime on
SPARC someday although that Solaris has moved to 'pulseaudio'.
Is it reasonable to put "pulse" on top of the search list ??
It is also possible to command-line start squeak with -vm-sound-pulse or
-vm-sound-OSS to select another plugin ... but given the fact that
vm-sound-pulse works (at least for me) I thought maybe it makes sense to put
it first in the search list.
How is this on other platforms ?
--
Sent from: http://forum.world.st/Squeak-VM-f104410.html
Branch: refs/heads/Cog
Home: https://github.com/OpenSmalltalk/opensmalltalk-vm
Commit: 8d2169219fa37e3961c55787ead60b2e23fa3c81
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/8d2169219fa37e3961…
Author: Eliot Miranda <eliot.miranda(a)gmail.com>
Date: 2020-04-02 (Thu, 02 Apr 2020)
Changed paths:
M build.win32x86/common/Makefile.msvc
M build.win32x86/common/Makefile.msvc.plugin
M build.win64x64/common/Makefile.msvc
M build.win64x64/common/Makefile.msvc.plugin
Log Message:
-----------
Windows MSVC build. The VMLIB must be provided to external plugins if they are
to use sqAssert.h. [ci skip]