Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion CHANGES
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
This is the CHANGES file for visuald, a
Visual Studio package providing both project management and language services

Copyright (c) 2010-2013 by Rainer Schuetze, All Rights Reserved
Copyright (c) 2010-2025 by Rainer Schuetze, All Rights Reserved

Version history
---------------
Expand Down Expand Up @@ -1406,3 +1406,11 @@ Version history
* mago: fixed showing intellisense information in tool tip while debugging in VS2022
* mago: expression evaluator now resolves identifiers of named enumerator types
* full installer now bundled with DMD 2.110.0 and LDC 1.40.0

2025-04-20 version 1.4.1-beta1
* dmdserver: updated to frontend of DMD 2.111.0
* full installer now bundled with DMD 2.111.0 and LDC 1.40.1
* updated to build with dmd-2.111
* mago: fixed display of AA key in expanded view
* issue #291: allow overriding the default compiler executable path in the VC project settings
* issue #296: VC project integration: added support to build for ARM64 with LDC
18 changes: 9 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ Copyright (c) 2010-2025 by Rainer Schuetze, All Rights Reserved
Visual D aims at providing seamless integration of the D programming language
into Visual Studio.

For installer download, more documentation and build instructions, please visit http://rainers.github.io/visuald/visuald/StartPage.html.
Use forum http://forum.dlang.org/group/digitalmars.D.ide for questions and the D bug tracker https://issues.dlang.org/ to report issues.
For installer download, more documentation and build instructions, please visit https://rainers.github.io/visuald/visuald/StartPage.html.
Use forum https://forum.dlang.org/group/ide for questions and the D bug tracker https://github.com/dlang/visuald/issues to report issues.


Major Features
Expand All @@ -22,7 +22,7 @@ Major Features
- custom build commands
- pre/post custom build steps
- automatic dependency generation
- automatic link between dependend projects
- automatic link between dependent projects
- new project templates

* Integration with VC projects
Expand Down Expand Up @@ -81,7 +81,7 @@ For more details, see the full text of the license in the file LICENSE_1.0.txt.

The installer comes with a number of additional products:
- cv2pdb: https://github.com/rainers/cv2pdb by Rainer Schuetze
- mago: http://dsource.org/projects/mago_debugger by Aldo Nunez
- mago: https://github.com/rainers/mago by Aldo Nunez/Rainer Schuetze
- DParser: https://github.com/aBothe/D_Parser by Alexander Bothe

Installation
Expand Down Expand Up @@ -113,17 +113,17 @@ In a nutshell:
- build project "VisualD"

For more information, visit
http://rainers.github.io/visuald/visuald/BuildFromSource.html
https://rainers.github.io/visuald/visuald/BuildFromSource.html

More Information
----------------
For more information on installation, a quick tour of Visual D with some
screen shots and feedback, please visit the project home for Visual D at
[http://rainers.github.io/visuald/visuald/StartPage.html](http://rainers.github.io/visuald/visuald/StartPage.html).
(https://rainers.github.io/visuald/visuald/StartPage.html).

There's a forum dedicated to IDE discussions (http://forum.dlang.org/group/digitalmars.D.ide), where you can leave your comments and suggestions.
Bug reports can be filed to the [D bugzilla database](https://issues.dlang.org/enter_bug.cgi?product=D)
for Component VisualD.
There's a forum dedicated to IDE discussions (https://forum.dlang.org/group/digitalmars.D.ide), where you can leave your comments and suggestions.
Bug reports can be filed to the [issues](https://github.com/dlang/visuald/issues)
of the repository.

Have fun,
Rainer Schuetze
6 changes: 3 additions & 3 deletions VERSION
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#define VERSION_MAJOR 1
#define VERSION_MINOR 4
#define VERSION_REVISION 0
#define VERSION_BETA
#define VERSION_BUILD 0
#define VERSION_REVISION 1
#define VERSION_BETA -beta
#define VERSION_BUILD 1
5 changes: 3 additions & 2 deletions msbuild/dbuild/CompileDOpt.cs
Original file line number Diff line number Diff line change
Expand Up @@ -161,11 +161,12 @@ public string CodeGeneration
get { return GetStringProperty("CodeGeneration"); }
set
{
string[][] switchMap = new string[3][]
string[][] switchMap = new string[4][]
{
new string[2] { "32BitsMS-COFF", "-m32mscoff" },
new string[2] { "32Bits", "-m32" },
new string[2] { "64Bits", "-m64" }
new string[2] { "64Bits", "-m64" },
new string[2] { "ARM64", "-march=arm64" }
};

SetEnumProperty("CodeGeneration", "Code Generation",
Expand Down
1 change: 1 addition & 0 deletions msbuild/dcompile.targets
Original file line number Diff line number Diff line change
Expand Up @@ -371,6 +371,7 @@
<Link>
<AdditionalLibraryDirectories Condition="'$(Platform)' == 'Win32'">$(LDCInstallDir)\lib32;%(Link.AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalLibraryDirectories Condition="'$(Platform)' == 'x64'">$(LDCInstallDir)\lib64;%(Link.AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalLibraryDirectories Condition="'$(Platform)' == 'ARM64'">$(LDCInstallDir)\libarm64;%(Link.AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>$(DRuntimeLibs);$(CRuntimeLibs);%(Link.AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemGroup>
Expand Down
3 changes: 2 additions & 1 deletion msbuild/dcompile_defaults.props
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,8 @@
<CodeGeneration Condition="'$(DCompiler)|$(Platform)' == 'DMD|Win32'">32BitsMS-COFF</CodeGeneration>
<CodeGeneration Condition="'$(DCompiler)|$(Platform)' == 'LDC|Win32'">32Bits</CodeGeneration>
<CodeGeneration Condition="'$(Platform)' == 'X64'">64Bits</CodeGeneration>
<CodeGeneration Condition="'$(Platform)' != 'Win32' and '$(Platform)' != 'X64'">echo DMD not supported on this platform
<CodeGeneration Condition="'$(Platform)' == 'ARM64'">ARM64</CodeGeneration>
<CodeGeneration Condition="'$(Platform)' != 'Win32' and '$(Platform)' != 'X64' and '$(Platform)' != 'ARM64'">echo DMD not supported on this platform
exit 1</CodeGeneration>


Expand Down
6 changes: 4 additions & 2 deletions msbuild/dmd.xml
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,10 @@
</BoolProperty>
<BoolProperty Name="LowMem" Category="General" DisplayName="Enable garbage collection for the compiler"
Description="Uses less memory for the compilation at the cost of slower compilation. (-lowmem)" Switch="-lowmem" />
<StringProperty Name="CompilerExe" Category="General" DisplayName="Compiler executable" IncludeInCommandLine="False"
Description="Path to the compiler executable." />

<!-- =============== Messages =============== -->
<!-- =============== Messages =============== -->
<EnumProperty Name="Warnings" Category="Messages" DisplayName="Enable warnings" Description="Enable display of warnings. (-w, -wi)">
<EnumValue Name="None" DisplayName="None" />
<EnumValue Name="Info" DisplayName="warnings as messages (compilation will continue)" Switch="-wi" />
Expand Down Expand Up @@ -237,12 +239,12 @@
Description="write browse information to this JSON file." Switch="-Xf" />

<!-- =============== invisible =============== -->
<StringProperty Name="CompilerExe" DisplayName="Command Line" Visible="False" IncludeInCommandLine="False" />
<BoolProperty Name="DoNotLink" DisplayName="Do Not Link" Visible="False" IncludeInCommandLine="True" Switch="-c" />
<EnumProperty Name="CodeGeneration" DisplayName="Code Generation" Visible="False" IncludeInCommandLine="True" >
<EnumValue Name="32BitsMS-COFF" DisplayName="Generate 32 bit code and write MS-COFF object files" Switch="-m32mscoff" />
<EnumValue Name="32Bits" DisplayName="Generate 32 bit code" Switch="-m32" />
<EnumValue Name="64Bits" DisplayName="Generate 64 bit code" Switch="-m64" />
<EnumValue Name="ARM64" DisplayName="Generate ARM64 code" Switch="-march=arm64" />
</EnumProperty>
<StringProperty Subtype="AdditionalOptions" Name="AdditionalOptions" Category="Command Line"
DisplayName="Additional Options" Description="Additional Options" />
Expand Down
5 changes: 4 additions & 1 deletion msbuild/ldc.xml
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,10 @@
</BoolProperty>
<BoolProperty Name="LowMem" Category="General" DisplayName="Enable garbage collection for the compiler"
Description="Uses less memory for the compilation at the cost of slower compilation. (-lowmem)" Switch="-lowmem" />
<StringProperty Name="CompilerExe" Category="General" DisplayName="Compiler executable" IncludeInCommandLine="False"
Description="Path to the compiler executable." />

<!-- =============== Messages =============== -->
<!-- =============== Messages =============== -->
<EnumProperty Name="Warnings" Category="Messages" DisplayName="Enable warnings" Description="Enable display of warnings. (-w, -wi)">
<EnumValue Name="None" DisplayName="None" />
<EnumValue Name="Info" DisplayName="warnings as messages (compilation will continue)" Switch="-wi" />
Expand Down Expand Up @@ -234,6 +236,7 @@
<EnumValue Name="32BitsMS-COFF" DisplayName="Generate 32 bit code and write MS-COFF object files" Switch="-m32mscoff" />
<EnumValue Name="32Bits" DisplayName="Generate 32 bit code" Switch="-m32" />
<EnumValue Name="64Bits" DisplayName="Generate 64 bit code" Switch="-m64" />
<EnumValue Name="ARM64" DisplayName="Generate ARM64 code" Switch="-march=arm64" />
</EnumProperty>
<StringProperty Subtype="AdditionalOptions" Name="AdditionalOptions" Category="Command Line"
DisplayName="Additional Options" Description="Additional Options" />
Expand Down
15 changes: 12 additions & 3 deletions nsis/visuald.nsi
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,12 @@

; define DMD source path to include dmd installation
; !define DMD
!define DMD_VERSION "2.110.0"
!define DMD_VERSION "2.111.0"
!define DMD_SRC c:\d\dmd-${DMD_VERSION}

; define LDC to include ldc installation
; !define LDC
!define LDC_VERSION "1.40.0"
!define LDC_VERSION "1.40.1"
!define LDC_SRC c:\d\ldc2-${LDC_VERSION}-windows-multilib

; define VS2019 to include VS2019 support
Expand Down Expand Up @@ -387,7 +387,7 @@ ${MementoSection} "Install DMD" SecDMD
!define DmdBaseDir "$CompilerInstallDir\dmd-${DMD_VERSION}"
${SetOutPath} "${DmdBaseDir}"
File /r ${DMD_SRC}\html
File /r ${DMD_SRC}\samples
;File /r ${DMD_SRC}\samples
File /r ${DMD_SRC}\src
File /r ${DMD_SRC}\windows
File ${DMD_SRC}\license.txt
Expand Down Expand Up @@ -745,6 +745,8 @@ ${MementoSectionEnd}
!endif

!macro RegisterPlatform Vxxx Platform
!define UniqueID ${__LINE__}
IfFileExists '${Vxxx}\Platforms\${Platform}' +1 NoPlatformDir_${UniqueID}
${SetOutPath} "${Vxxx}\Platforms\${Platform}\ImportBefore\Default"
${File} ..\msbuild\ImportBefore\Default\ d.props
${SetOutPath} "${Vxxx}\Platforms\${Platform}\ImportBefore"
Expand All @@ -754,6 +756,8 @@ ${MementoSectionEnd}
${SetOutPath} "${Vxxx}\Platforms\${Platform}\ImportAfter"
${File} ..\msbuild\ImportAfter\ d.targets
${File} ..\msbuild\ImportAfter\ general_d.targets
NoPlatformDir_${UniqueID}:
!undef UniqueID
!macroend
!define RegisterPlatform "!insertmacro RegisterPlatform"

Expand Down Expand Up @@ -792,6 +796,7 @@ ${MementoSection} "MSBuild integration" SecMSBuild
StrCmp $1 "" NoVS2022
${RegisterPlatform} "$1\MsBuild\Microsoft\VC\v170" "x64"
${RegisterPlatform} "$1\MsBuild\Microsoft\VC\v170" "Win32"
${RegisterPlatform} "$1\MsBuild\Microsoft\VC\v170" "ARM64"
${RegisterIcons} "17.0"

!define V170_GENERAL_XML "$1\MsBuild\Microsoft\VC\v170\1033\general.xml"
Expand All @@ -809,6 +814,7 @@ ${MementoSection} "MSBuild integration" SecMSBuild
StrCmp $1 "" NoVS2022_2
${RegisterPlatform} "$1\MsBuild\Microsoft\VC\v170" "x64"
${RegisterPlatform} "$1\MsBuild\Microsoft\VC\v170" "Win32"
${RegisterPlatform} "$1\MsBuild\Microsoft\VC\v170" "ARM64"
${RegisterIcons} "17.0"

!define V170_GENERAL_XML_2 "$1\MsBuild\Microsoft\VC\v170\1033\general.xml"
Expand All @@ -826,6 +832,7 @@ ${MementoSection} "MSBuild integration" SecMSBuild
StrCmp $1 "" NoVS2022_3
${RegisterPlatform} "$1\MsBuild\Microsoft\VC\v170" "x64"
${RegisterPlatform} "$1\MsBuild\Microsoft\VC\v170" "Win32"
${RegisterPlatform} "$1\MsBuild\Microsoft\VC\v170" "ARM64"
${RegisterIcons} "17.0"

!define V170_GENERAL_XML_3 "$1\MsBuild\Microsoft\VC\v170\1033\general.xml"
Expand All @@ -843,6 +850,7 @@ ${MementoSection} "MSBuild integration" SecMSBuild
StrCmp $1 "" NoVS2022_4
${RegisterPlatform} "$1\MsBuild\Microsoft\VC\v170" "x64"
${RegisterPlatform} "$1\MsBuild\Microsoft\VC\v170" "Win32"
${RegisterPlatform} "$1\MsBuild\Microsoft\VC\v170" "ARM64"
${RegisterIcons} "17.0"

!define V170_GENERAL_XML_4 "$1\MsBuild\Microsoft\VC\v170\1033\general.xml"
Expand All @@ -859,6 +867,7 @@ ${MementoSection} "MSBuild integration" SecMSBuild
StrCmp $1 "" NoVS2022BT
${RegisterPlatform} "$1\Common7\IDE\VC\VCTargets" "x64"
${RegisterPlatform} "$1\Common7\IDE\VC\VCTargets" "Win32"
${RegisterPlatform} "$1\Common7\IDE\VC\VCTargets" "ARM64"
${RegisterIcons} "17.0"

!define V170BT_GENERAL_XML "$1\Common7\IDE\VC\VCTargets\1033\general.xml"
Expand Down
8 changes: 0 additions & 8 deletions stdext/com.d
Original file line number Diff line number Diff line change
Expand Up @@ -57,14 +57,6 @@ C newCom(C, T...)(T arguments) if(is(C : ComObject) && T.length > 0)

class ComObject : IUnknown
{
version(none)
@disable new(size_t size)
{
assert(false); // should not be called because we don't have enough type info
void* p = gc_malloc(size, 1, typeid(ComObject)); // BlkAttr.FINALIZE
return p;
}

extern (Windows):
override HRESULT QueryInterface(const IID* riid, void** ppv)
{
Expand Down
2 changes: 1 addition & 1 deletion vdc/dmdserver/dmd
Submodule dmd updated 1104 files
19 changes: 10 additions & 9 deletions vdc/dmdserver/dmderrors.d
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ private __gshared // under gErrorSync lock

private string gLastHeader;
private string[] gLastErrorMsgs; // all but first are supplemental
private Loc[] gLastErrorLocs;
private SourceLoc[] gLastErrorLocs;
}

void flushLastError()
Expand All @@ -46,7 +46,7 @@ void flushLastError()
char[] msg;
if (pos < gLastErrorLocs.length)
{
Loc loc = gLastErrorLocs[pos];
auto loc = gLastErrorLocs[pos];
int len = snprintf(buf.ptr, buf.length, "%d,%d,%d,%d:", loc.linnum, loc.charnum - 1, loc.linnum, loc.charnum);
msg ~= buf[0..len];
}
Expand All @@ -57,15 +57,16 @@ void flushLastError()
if (i > 0)
msg ~= "\a";

Loc loc = gLastErrorLocs[i];
auto loc = gLastErrorLocs[i];
if (i == pos)
{
if (i > 0)
msg ~= "--> ";
}
else if (loc.filename)
{
int len = snprintf(buf.ptr, buf.length, "%s(%d): ", loc.filename, loc.linnum);
auto fn = loc.filename;
int len = snprintf(buf.ptr, buf.length, "%.*s(%d): ", cast(int)fn.length, fn.ptr, loc.linnum);
msg ~= buf[0..len];
}
msg ~= gLastErrorMsgs[i];
Expand All @@ -75,7 +76,7 @@ void flushLastError()

size_t otherLocs;
foreach (loc; gLastErrorLocs)
if (!loc.filename || _stricmp(loc.filename, gErrorFile) != 0)
if (!loc.filename || icmp(loc.filename, gErrorFile) != 0)
otherLocs++;

if (otherLocs == gLastErrorLocs.length)
Expand All @@ -87,8 +88,8 @@ void flushLastError()
// prepend the loc inside gErrorFile to the beginning of the error message
for (size_t i = 0; i < gLastErrorLocs.length; i++)
{
Loc loc = gLastErrorLocs[i];
if (loc.filename && _stricmp(loc.filename, gErrorFile) == 0)
auto loc = gLastErrorLocs[i];
if (loc.filename && icmp(loc.filename, gErrorFile) == 0)
{
gErrorMessages ~= genErrorMessage(i) ~ "\n";
break;
Expand All @@ -101,15 +102,15 @@ void flushLastError()
gLastErrorMsgs.length = 0;
}

bool errorPrint(const ref Loc loc, Color headerColor, const(char)* header,
bool errorPrint(const ref SourceLoc loc, Color headerColor, const(char)* header,
const(char)* format, va_list ap, const(char)* p1 = null, const(char)* p2 = null) nothrow
{
if (!loc.filename)
return true;

try synchronized(gErrorSync)
{
bool other = _stricmp(loc.filename, gErrorFile) != 0;
bool other = icmp(loc.filename, gErrorFile) != 0;
while (header && std.ascii.isWhite(*header))
header++;
bool supplemental = !header || !*header;
Expand Down
Loading
Loading