Skip to content
Dolphin Smalltalk virtual machine
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Compiler
ConsoleStub
ConsoleToGo Add debug configuration to CI build (#175) May 15, 2018
DolphinSureCrypto Add debug configuration to CI build (#175) May 15, 2018
GUIStub
InProcStub
InProcToGo Add debug configuration to CI build (#175) May 15, 2018
Launcher Replace some x86 asm SmallInteger prims with C++ implementations (#178) May 28, 2018
Res Replace some x86 asm SmallInteger prims with C++ implementations (#178) May 28, 2018
ToGoStub Add debug configuration to CI build (#175) May 15, 2018
VMLib Move the primitive table from asm to C++ May 13, 2018
zlib
.gitattributes
.gitignore Break dependency on icuuc.DLL, as this is only available on Windows 1… May 9, 2018
ActiveXHost.idl Suppress some longstanding midl warnings Jul 18, 2017
AppVeyorTestDolphinVM.cmd Oops, forgot to retarget to master May 13, 2018
AppVeyorZipDolphinVM.cmd
CompilePrims.cpp
CrashDump.cpp
CritSect.h
DLLModule.h Replace VMLib and ToGoLib projects with a shared files project Feb 18, 2018
DevRes.vcxproj
DllModule.cpp
DolphinIF.h
DolphinLib.vcxproj Add debug configuration to CI build (#175) May 15, 2018
DolphinSmalltalk.h Compiler should only generate UTF-8 string literals when necessary Apr 22, 2018
DolphinSmalltalk.idl
DolphinVM.sln
DolphinX.h
ExternalBytes.asm Move the primitive table from asm to C++ May 13, 2018
ExternalCall.asm
GC.cpp
GCPrim.cpp
IDolphin.cpp Replace some x86 asm SmallInteger prims with C++ implementations (#178) May 28, 2018
IDolphinStart.cpp Fixing boot May 2, 2018
IPDolphin.idl Initial commit Dec 29, 2015
IPDolphinToGo.dll
ImageFileResource.cpp
ImageFileResource.h
ImageHeader.h Wide strings should have 2-byte null terminator Feb 18, 2018
InProcStart.cpp Debug build fixes to stubs and 3 settings. (#174) May 15, 2018
IntPrim.cpp Replace some x86 asm SmallInteger prims with C++ implementations (#178) May 28, 2018
InterpRegisters.h Remove unecessary arg/return value from ObjectMemory::ReconcileZct Jan 12, 2017
Interprt.h
Interprt.inl
InterprtInit.cpp
InterprtPrim.inl
InterprtProc.inl
LICENSE Initial commit Dec 29, 2015
LoadImage.cpp
ObjMemInit.cpp
ObjMemPriv.inl
PerformPrim.cpp Move the primitive table from asm to C++ May 13, 2018
PrimitivesTable.cpp Add primitiveCopyFromTo Jun 12, 2018
README.md
RaiseThreadException.c Initial commit Dec 29, 2015
RaiseThreadException.h
SBHEAP.C Upgrade to latest Windows SDK Apr 24, 2018
STArray.h
STAssoc.h Fix some overlapped call bugs Apr 23, 2018
STBehavior.h
STBlockClosure.h Replace some x86 asm SmallInteger prims with C++ implementations (#178) May 28, 2018
STBlockInfo.h
STByteArray.h VM needs to be a Unicode app now Apr 11, 2018
STCharacter.h Replace some x86 asm SmallInteger prims with C++ implementations (#178) May 28, 2018
STClassDesc.h
STCollection.h Reduce overhead of calling primitives implemented in C++ Jan 12, 2017
STContext.h
STExternal.h Replace some x86 asm SmallInteger prims with C++ implementations (#178) May 28, 2018
STFloat.h
STHashedCollection.h
STInteger.h
STLinkedList.h
STMagnitude.h
STMemoryManager.h Store the current OT limit in the memory manager object Dec 23, 2016
STMessage.h
STMethod.h Replace some x86 asm SmallInteger prims with C++ implementations (#178) May 28, 2018
STMethodContext.h Remove some obsolete declarations Feb 24, 2016
STMethodHeader.h
STObject.h VM needs to be a Unicode app now Apr 11, 2018
STProcess.h
STStackFrame.h Remove some obsolete declarations Feb 24, 2016
STStream.h Remove some obsolete declarations Feb 24, 2016
STString.h Replace some x86 asm SmallInteger prims with C++ implementations (#178) May 28, 2018
STVirtualObject.h Replace some x86 asm SmallInteger prims with C++ implementations (#178) May 28, 2018
SaveImage.cpp Replace some x86 asm SmallInteger prims with C++ implementations (#178) May 28, 2018
SearchPrim.cpp Move the primitive table from asm to C++ May 13, 2018
SmallIntPrim.asm Replace some x86 asm SmallInteger prims with C++ implementations (#178) May 28, 2018
SnapshotPrim.cpp
StdAfx.h Add a debug bytecode disassembler template class for compiler and VM Dec 21, 2016
StreamPrim.cpp
StringHashes.c
TraceStream.cpp Replace some x86 asm SmallInteger prims with C++ implementations (#178) May 28, 2018
TraceStream.h
Utf16StringBuf.h VM needs to be a Unicode app now Apr 11, 2018
VMDLL.cpp Remove redundant [Display|Remove]DesktopMessage functions from VM Feb 8, 2017
VMDLL.h
VMExcept.h
VMPointers.h
WINHEAP.H Target 10.0.14393.0 Windows SDK (#97) Oct 22, 2016
alloc.cpp primitiveCopyFromTo should fail if the receiver is not indexable (#180) Jun 13, 2018
appveyor.yml Add debug configuration to CI build (#175) May 15, 2018
axhost.cpp
axhost.h
binstream.h
byteasm.asm
bytecde.cpp Replace some x86 asm SmallInteger prims with C++ implementations (#178) May 28, 2018
bytecdes.h
compact.cpp
constobj.asm Empty objects have null #yourAddress (#123) Feb 18, 2017
dealloc.cpp
decode.cpp
devres.cpp Initial commit Dec 29, 2015
devres.rc Stop setting a 1mS timer resolution to preserve battery life (#102) Dec 3, 2016
disassembler.h
dll.vcxproj
dlldatax.c Initial commit Dec 29, 2015
dlldatax.h Initial commit Dec 29, 2015
dolphin.cpp Replace some x86 asm SmallInteger prims with C++ implementations (#178) May 28, 2018
dolphin.props
dolphin.targets
environ.h
exports.cpp
extcall.cpp Replace some x86 asm SmallInteger prims with C++ implementations (#178) May 28, 2018
fatalerror.cpp Replace some x86 asm SmallInteger prims with C++ implementations (#178) May 28, 2018
finalize.cpp Replace some x86 asm SmallInteger prims with C++ implementations (#178) May 28, 2018
flotprim.cpp Replace some x86 asm SmallInteger prims with C++ implementations (#178) May 28, 2018
interfac.cpp Replace some x86 asm SmallInteger prims with C++ implementations (#178) May 28, 2018
interprt.cpp
ist.def
ist.h Replace some x86 asm SmallInteger prims with C++ implementations (#178) May 28, 2018
istasm.inc
largeintprim.cpp
nttimer.h
objmem.cpp Replace some x86 asm SmallInteger prims with C++ implementations (#178) May 28, 2018
objmem.h
oleprim.cpp
oopq.cpp
oopq.h
ote.h VM needs to be a Unicode app now Apr 11, 2018
primasm.asm
primitiv.cpp Add primitiveCopyFromTo Jun 12, 2018
process.cpp
rc_devrs.h Delays scheduled to wake after ~49 days of uptime may fail to fire Dec 2, 2016
rc_stub.h
rc_vm.h Work in progress on support for UTF-8 and UTF-16 encoded strings Mar 18, 2018
realloc.cpp Work in progress on support for UTF-8 and UTF-16 encoded strings Mar 18, 2018
regkey.h VM needs to be a Unicode app now Apr 11, 2018
sampler.cpp Complete upgrade to VS2017 Jul 21, 2017
sbheap.h
segdefs.h Initial commit Dec 29, 2015
startApp.cpp Replace some x86 asm SmallInteger prims with C++ implementations (#178) May 28, 2018
startToGoVm.cpp Replace some x86 asm SmallInteger prims with C++ implementations (#178) May 28, 2018
startVmErrors.cpp
startvm.h
strgprim.cpp
thin.cpp
thin.def Initial commit Dec 29, 2015
thin.rc Initial commit Dec 29, 2015
thrdcall.cpp Replace some x86 asm SmallInteger prims with C++ implementations (#178) May 28, 2018
thrdcall.h Replace some x86 asm SmallInteger prims with C++ implementations (#178) May 28, 2018
timer.cpp Replace some x86 asm SmallInteger prims with C++ implementations (#178) May 28, 2018
vm.def
vm.rc Work in progress on support for UTF-8 and UTF-16 encoded strings Mar 18, 2018
vmVersionCheck.cpp
vminit.cpp
vmref.cpp Revert rollback from vm7.0.32 Dec 21, 2016
wingui.cpp
zbinstream.h Replace VMLib and ToGoLib projects with a shared files project Feb 18, 2018
zct.cpp Replace some x86 asm SmallInteger prims with C++ implementations (#178) May 28, 2018
zfbinstream.h Fixing boot May 2, 2018

README.md

DolphinVM

Please note: This repository is now obsolete. It has been merged into the main Dolphin repository for Dolphin 7.1.

Build status

The Dolphin Smalltalk virtual machine.

This is a VS2017 solution to build the Virtual Machine (VM) elements of Dolphin Smalltalk. It is not necessary to build the VM to run the Dolphin IDE, which is available in the Dolphin GitHub repository, since you can download these in pre-built form, either directly or by running the FetchVM script in the root of the Dolphin repository. You'll only need to build DolphinVM if you need to explicitly change the VM itself, or if you want to debug a low-level issue.

Note: if you are just looking to install Dolphin and get going as quickly as possible you may prefer to start with the release build and and follow the directions here. That way you won't have to sully yourself with either the Dolphin or the DolphinVM repositories. However, if you really want to build the Dolphin VM from scratch, read on.

Building the Virtual Machine

  • First clone the Dolphin repo to a \Dolphin directory on your machine. It can actually be any location but for convenience we'll call it \Dolphin. If you want to submit changes, however, you will first need to create your own fork and clone that instead. You will not be able to push directly to the main Dolphin repo.

  • Versions prior to 7.1: You should clone this repository (DolphinVM) into a DolphinVM\ subdirectory of \Dolphin\Core\. The same comment applies regarding the need to fork this repo if you want to be able to contribute changes.

  • Version 7.1 and later: This repository has been merged into the main Dolphin repository and can be found in the Core\DolphinVM folder. The history has been retained. No further changes will be accepted to the DolphinVM via this repo for versions of Dolphin from 7.1. If you wish to contribute, please make and commit your VM changes in the main Dolphin repos and submit a PR there.

  • Install VS2017 Community Edition on your machine with the "Desktop development with C++" workload. You can use the Pro or Enterprise edition if you have it. It is possible to compile the VM with VS2015, but you will need to downgrade the solution to the v140 toolset and either retarget to the ealier Windows SDK that shipped with VS2015, or install the latest SDK standalone. Later VS versions (when they appear) may work too but we no longer support VS2013, sorry. The Dolphin VM is a set of C++ projects so make sure to install this option (it's not the default) or you'll end up only being able to compile C#.

  • Load the DolphinVM solution into Visual Studio. Choose the Release profile (Debug will compile but will run slowly) and then Build Solution. A bunch of DLLs and Dolphin7.exe will have been copied to the \Dolphin root folder.

Now go to the Dolphin Getting Started page and follow the instructions there to build the image file with your new VM. You can then launch Dolphin and continue with the tutorials.

Releasing the VM

If sufficient changes have been made to the VM such that a new release is warranted, you should push a new tag of the form v.7.x.y (eg: v7.0.42). When the tag is eventually pushed to the GitHub master branch (by a maintainer) this will cause AppVeyor to build and generate a new Release. Each release consists of the full set of VM binaries wrapped up as a zip called DolphinVM.zip. The VM binaries are not (now) included in the Dolphin repository but can be fetched by executing the FetchVM.CMD script from the image directory. Whenever, a new VM is released the version tag should be edited into FetchVM.ps1 so that those who do not want to build it can easily download the correct version to boot and run Dolphin image from the Dolphin repository.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.