Skip to content

Commit

Permalink
[wasm] Bump emscripten to 2.0.21 (#52870)
Browse files Browse the repository at this point in the history
* Bump emscripten version

* Rename __padding to _padding to avoid warnings

And errors as we use `-Werror`:

    error G94F6014A: identifier '__padding' is reserved because it starts with '__'

C99 and C++ standard defines indentifiers with `__` prefix as reserved.

* Fix cast warning/error

With latest emscripten we get this warning (and error as we use
 `-Werror`):

    src/libraries/Native/Unix/System.Native/pal_process.c(374,92): error G3DC5E52A: cast from 'void (*)(int, siginfo_t *, void *)' to 'void (*)(int)' converts to incompatible function type [-Werror,-Wcast-function-type]
                  void (*oldhandler)(int) = (((unsigned int)sa_old.sa_flags) & SA_SIGINFO) ? (void (*)(int))sa_old.sa_sigaction : sa_old.sa_handler;

* Add `-s DISABLE_EXCEPTION_CATCHING=0`

when building dotnet.js

* Use EMSDK_PYTHON

* Use delayed expansion

Before the `EMSDK_PYTHON` was evaluated before running
the `emsdk_env.bat` script.

* Replace deprecated EXTRA_EXPORTED_RUNTIME_METHODS

with EXPORTED_RUNTIME_METHODS

Build warning/error:

    emcc : warning : EXTRA_EXPORTED_RUNTIME_METHODS is deprecated, please use EXPORTED_RUNTIME_METHODS instead [-Wdeprecated]

* Don't need to cast anymore

* 2.0.21 was just released, so try our luck ;-)

* Use new docker images with 2.0.21

* Use the sys includes fix on all platforms

* Remove deprecated --llvm-opts usage

Context: emscripten-core/emscripten@0691cc6

* Update emscripten version in the workload manifest

* Update emscripten versions in the docs

* Update eng/ versions

* Add ActiveIssue attr in the MemoryCacheTest

* Add ActiveIssue attr to the FileSystem tests

* Update after merge

* Resolve one more conflict

* Add ActiveIssue to the MemoryMappedFiles tests

* Revert "Fix cast warning/error"

This reverts commit 0a1aa4a.

* Unset HAVE_FORK for Browser

* Remove active issue

Fixed by 93cf5df

* Set HAVE_FORK to 0

* Set HAVE_FORK to 0 instead if unsetting

* Remove -s DISABLE_EXCEPTION_CATCHING=0

It might not be needed anymore
  • Loading branch information
radekdoulik authored Jun 2, 2021
1 parent dbb05eb commit d43b00a
Show file tree
Hide file tree
Showing 23 changed files with 46 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ If you haven't already done so, please read [this document](../../README.md#Buil
The **correct version** of Emscripten SDK (emsdk) needs to be installed.
* Run `make -C src/mono/wasm provision-wasm` to install emsdk into `src/mono/wasm/emsdk`.
* Alternatively follow the [installation guide](https://emscripten.org/docs/getting_started/downloads.html#sdk-download-and-install).
Do not install `latest` but rather specific version e.g. `./emsdk install 2.0.12`. See [emscripten-version.txt](..\..\..\..\src\mono\wasm\emscripten-version.txt)
Do not install `latest` but rather specific version e.g. `./emsdk install 2.0.21`. See [emscripten-version.txt](..\..\..\..\src\mono\wasm\emscripten-version.txt)

Once installed the `EMSDK_PATH` environment variable needs to be set:

Expand Down
4 changes: 2 additions & 2 deletions eng/Version.Details.xml
Original file line number Diff line number Diff line change
Expand Up @@ -206,9 +206,9 @@
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
<Sha>e706e636678d2edce09f06941795b5026eea92d1</Sha>
</Dependency>
<Dependency Name="Microsoft.NET.Runtime.Emscripten.2.0.12.Node.win-x64" Version="6.0.0-preview.6.21270.1">
<Dependency Name="Microsoft.NET.Runtime.Emscripten.2.0.21.Node.win-x64" Version="6.0.0-preview.6.21275.1">
<Uri>https://github.com/dotnet/emsdk</Uri>
<Sha>5a2a6482a34c2fe9ed4f9f97bb787ef0a7737965</Sha>
<Sha>defa37b05c734e025292c5747664e970cd2ac444</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.HotReload.Utils.Generator.BuildTool" Version="1.0.1-alpha.0.21281.1">
<Uri>https://github.com/dotnet/hotreload-utils</Uri>
Expand Down
5 changes: 3 additions & 2 deletions eng/Versions.props
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@
<UsingToolMicrosoftNetILLinkTasks>true</UsingToolMicrosoftNetILLinkTasks>
<UsingToolIbcOptimization>false</UsingToolIbcOptimization>
<UsingToolXliff>false</UsingToolXliff>
<MicrosoftNETRuntimeEmscripten2012Nodewinx64Version>6.0.0-preview.6.21270.1</MicrosoftNETRuntimeEmscripten2012Nodewinx64Version>
<MicrosoftNETRuntimeEmscriptenVersion>$(MicrosoftNETRuntimeEmscripten2012Nodewinx64Version)</MicrosoftNETRuntimeEmscriptenVersion>
</PropertyGroup>
<!--
Servicing build settings for Setup/Installer packages. Instructions:
Expand Down Expand Up @@ -174,6 +172,9 @@
<runtimewinx64MicrosoftNETCoreRuntimeMonoLLVMToolsVersion>9.0.1-alpha.1.21281.1</runtimewinx64MicrosoftNETCoreRuntimeMonoLLVMToolsVersion>
<runtimeosx1012x64MicrosoftNETCoreRuntimeMonoLLVMSdkVersion>9.0.1-alpha.1.21281.1</runtimeosx1012x64MicrosoftNETCoreRuntimeMonoLLVMSdkVersion>
<runtimeosx1012x64MicrosoftNETCoreRuntimeMonoLLVMToolsVersion>9.0.1-alpha.1.21281.1</runtimeosx1012x64MicrosoftNETCoreRuntimeMonoLLVMToolsVersion>
<!-- emscripten / Node -->
<MicrosoftNETRuntimeEmscripten2021Nodewinx64Version>6.0.0-preview.6.21275.1</MicrosoftNETRuntimeEmscripten2021Nodewinx64Version>
<MicrosoftNETRuntimeEmscriptenVersion>$(MicrosoftNETRuntimeEmscripten2021Nodewinx64Version)</MicrosoftNETRuntimeEmscriptenVersion>
</PropertyGroup>
<!-- Override isolated build dependency versions with versions from Repo API. -->
<Import Project="$(DotNetPackageVersionPropsPath)" Condition="'$(DotNetPackageVersionPropsPath)' != ''" />
Expand Down
2 changes: 1 addition & 1 deletion eng/pipelines/common/platform-matrix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ jobs:
targetRid: browser-wasm
platform: Browser_wasm
container:
image: ubuntu-18.04-webassembly-20210309143118-005aab4
image: ubuntu-18.04-webassembly-20210519131124-ba00c14
registry: mcr
jobParameters:
runtimeFlavor: ${{ parameters.runtimeFlavor }}
Expand Down
2 changes: 1 addition & 1 deletion eng/pipelines/libraries/helix-queues-setup.yml
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,6 @@ jobs:

# WebAssembly windows
- ${{ if eq(parameters.platform, 'Browser_wasm_win') }}:
- (Windows.Server.Core.1909.Amd64.Open)windows.10.amd64.server20h1.open@mcr.microsoft.com/dotnet-buildtools/prereqs:windowsservercore-2004-helix-webassembly-amd64-20210422161149-94a50b5
- (Windows.Server.Core.1909.Amd64.Open)windows.10.amd64.server20h1.open@mcr.microsoft.com/dotnet-buildtools/prereqs:windowsservercore-2004-helix-webassembly-amd64-20210519130955-ba00c14

${{ insert }}: ${{ parameters.jobParameters }}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ typedef struct
uint32_t InterfaceIndex; // The index of the interface to which this address belongs.
uint8_t AddressBytes[8]; // A pointer to the bytes containing the address.
uint8_t NumAddressBytes; // The number of bytes actually stored in the address.
uint8_t __padding;
uint8_t _padding;
uint16_t HardwareType;
} LinkLayerAddressInfo;

Expand All @@ -30,7 +30,7 @@ typedef struct
uint8_t AddressBytes[16];
uint8_t NumAddressBytes;
uint8_t PrefixLength;
uint8_t __padding[2];
uint8_t _padding[2];
} IpAddressInfo;

typedef struct
Expand All @@ -44,7 +44,7 @@ typedef struct
uint8_t NumAddressBytes; // The number of bytes actually stored in the address.
uint8_t AddressBytes[8]; // Link address.
uint8_t SupportsMulticast; // Interface supports multicast.
uint8_t __padding[3];
uint8_t _padding[3];
} NetworkInterfaceInfo;

typedef void (*IPv4AddressFound)(void* context, const char* interfaceName, IpAddressInfo* addressInfo);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ typedef struct
uint64_t SegmentsResent;
uint64_t SegmentsSent;
int32_t CurrentConnections;
int32_t __padding;
int32_t _padding;
} TcpGlobalStatistics;

typedef struct
Expand Down Expand Up @@ -120,7 +120,7 @@ typedef struct
uint8_t AddressBytes[16];
uint32_t NumAddressBytes;
uint32_t Port;
uint32_t __padding1;
uint32_t _padding1;
} IPEndPointInfo;

typedef struct
Expand Down
2 changes: 2 additions & 0 deletions src/libraries/Native/Unix/configure.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -543,6 +543,8 @@ elseif(CLR_CMAKE_TARGET_ANDROID)
unset(HAVE_SHM_OPEN_THAT_WORKS_WELL_ENOUGH_WITH_MMAP)
set(HAVE_CLOCK_MONOTONIC 1)
set(HAVE_CLOCK_REALTIME 1)
elseif (CLR_CMAKE_TARGET_BROWSER)
set(HAVE_FORK 0)
else()
check_c_source_runs(
"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ public void OpenFile_ThrowsIOException()
/// file is allowed.
/// </summary>
[Fact]
[ActiveIssue("https://github.com/dotnet/runtime/issues/53021", TestPlatforms.Browser)]
public void WriteToReadOnlyFile()
{
string path = GetTestFilePath();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ public async Task OpenFile_ThrowsIOExceptionAsync()
/// file is allowed.
/// </summary>
[Fact]
[ActiveIssue("https://github.com/dotnet/runtime/issues/53021", TestPlatforms.Browser)]
public async Task WriteToReadOnlyFileAsync()
{
string path = GetTestFilePath();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ public void Read_FileNotFound()
/// file is allowed.
/// </summary>
[Fact]
[ActiveIssue("https://github.com/dotnet/runtime/issues/53021", TestPlatforms.Browser)]
public void WriteToReadOnlyFile()
{
string path = GetTestFilePath();
Expand Down Expand Up @@ -293,6 +294,7 @@ public void Read_FileNotFound()
/// file is allowed.
/// </summary>
[Fact]
[ActiveIssue("https://github.com/dotnet/runtime/issues/53021", TestPlatforms.Browser)]
public void WriteToReadOnlyFile()
{
string path = GetTestFilePath();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ public Task Read_FileNotFound() =>
/// file is allowed.
/// </summary>
[Fact]
[ActiveIssue("https://github.com/dotnet/runtime/issues/53021", TestPlatforms.Browser)]
public async Task WriteToReadOnlyFile()
{
string path = GetTestFilePath();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ public void Read_FileNotFound()
/// file is allowed.
/// </summary>
[Fact]
[ActiveIssue("https://github.com/dotnet/runtime/issues/53021", TestPlatforms.Browser)]
public void WriteToReadOnlyFile()
{
string path = GetTestFilePath();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ public Task Read_FileNotFoundAsync() =>
/// file is allowed.
/// </summary>
[Fact]
[ActiveIssue("https://github.com/dotnet/runtime/issues/53021", TestPlatforms.Browser)]
public async Task WriteToReadOnlyFileAsync()
{
string path = GetTestFilePath();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -697,13 +697,15 @@ private void WriteToReadOnlyFile(MemoryMappedFileAccess access, bool succeeds)
[Theory]
[InlineData(MemoryMappedFileAccess.Read)]
[InlineData(MemoryMappedFileAccess.ReadWrite)]
[ActiveIssue("https://github.com/dotnet/runtime/issues/53021", TestPlatforms.Browser)]
public void WriteToReadOnlyFile_ReadWrite(MemoryMappedFileAccess access)
{
WriteToReadOnlyFile(access, access == MemoryMappedFileAccess.Read ||
PlatformDetection.IsSuperUser);
}

[Fact]
[ActiveIssue("https://github.com/dotnet/runtime/issues/53021", TestPlatforms.Browser)]
public void WriteToReadOnlyFile_CopyOnWrite()
{
WriteToReadOnlyFile(MemoryMappedFileAccess.CopyOnWrite, PlatformDetection.IsSuperUser);
Expand Down
4 changes: 4 additions & 0 deletions src/mono/cmake/configure.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -160,3 +160,7 @@ if(HOST_IOS)
elseif(HOST_MACCAT)
set(HAVE_SYSTEM 0)
endif()

if(HOST_BROWSER)
set(HAVE_FORK 0)
endif()
2 changes: 1 addition & 1 deletion src/mono/mono.proj
Original file line number Diff line number Diff line change
Expand Up @@ -526,7 +526,7 @@
<MonoLibClang Condition="$([MSBuild]::IsOSPlatform('OSX'))">$(EMSDK_PATH)/upstream/lib/libclang.dylib</MonoLibClang>
<MonoLibClang Condition="$([MSBuild]::IsOSPlatform('Linux'))">$(EMSDK_PATH)/upstream/lib/libclang.so</MonoLibClang>
<MonoLibClang Condition="$([MSBuild]::IsOSPlatform('Windows'))">$([MSBuild]::NormalizePath('$(EMSDK_PATH)', 'upstream', 'bin', 'libclang.dll'))</MonoLibClang>
<PythonCmd Condition="'$(OS)' == 'Windows_NT'">call &quot;$([MSBuild]::NormalizePath('$(EMSDK_PATH)', 'emsdk_env.bat'))&quot; &amp;&amp; python</PythonCmd>
<PythonCmd Condition="'$(OS)' == 'Windows_NT'">setlocal EnableDelayedExpansion &amp;&amp; call &quot;$([MSBuild]::NormalizePath('$(EMSDK_PATH)', 'emsdk_env.bat'))&quot; &amp;&amp; !EMSDK_PYTHON!</PythonCmd>
<_ForceRelease Condition="$([MSBuild]::IsOSPlatform('Windows')) and '$(TargetArchitecture)' == 'wasm' and '$(Configuration)' == 'Debug'">true</_ForceRelease>
</PropertyGroup>

Expand Down
5 changes: 1 addition & 4 deletions src/mono/mono/tools/offsets-tool/offsets-tool.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import sys
import argparse
import clang.cindex
import platform

IOS_DEFINES = ["HOST_DARWIN", "TARGET_MACH", "MONO_CROSS_COMPILE", "USE_MONO_CTX", "_XOPEN_SOURCE"]
ANDROID_DEFINES = ["HOST_ANDROID", "MONO_CROSS_COMPILE", "USE_MONO_CTX", "BIONIC_IOCTL_NO_SIGNEDNESS_OVERLOAD"]
Expand Down Expand Up @@ -84,9 +83,7 @@ def require_emscipten_path (args):

if "wasm" in args.abi:
require_emscipten_path (args)
self.sys_includes = [args.emscripten_path + "/system/include", args.emscripten_path + "/system/include/libc", args.emscripten_path + "/system/lib/libc/musl/arch/emscripten"]
if platform.system() == "Windows":
self.sys_includes += [args.emscripten_path + "/system/lib/libc/musl/include", args.emscripten_path + "/system/lib/libc/musl/arch/generic"]
self.sys_includes = [args.emscripten_path + "/system/include", args.emscripten_path + "/system/include/libc", args.emscripten_path + "/system/lib/libc/musl/arch/emscripten", args.emscripten_path + "/system/lib/libc/musl/include", args.emscripten_path + "/system/lib/libc/musl/arch/generic"]
self.target = Target ("TARGET_WASM", None, [])
self.target_args += ["-target", args.abi]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -230,29 +230,29 @@
"kind": "Sdk",
"version": "${EmscriptenVersion}",
"alias-to": {
"win-x64": "Microsoft.NET.Runtime.Emscripten.2.0.12.Node.win-x64",
"linux-x64": "Microsoft.NET.Runtime.Emscripten.2.0.12.Node.linux-x64",
"osx-x64": "Microsoft.NET.Runtime.Emscripten.2.0.12.Node.osx-x64",
"osx-arm64": "Microsoft.NET.Runtime.Emscripten.2.0.12.Node.osx-x64"
"win-x64": "Microsoft.NET.Runtime.Emscripten.2.0.21.Node.win-x64",
"linux-x64": "Microsoft.NET.Runtime.Emscripten.2.0.21.Node.linux-x64",
"osx-x64": "Microsoft.NET.Runtime.Emscripten.2.0.21.Node.osx-x64",
"osx-arm64": "Microsoft.NET.Runtime.Emscripten.2.0.21.Node.osx-x64"
}
},
"Microsoft.NET.Runtime.Emscripten.Python" : {
"kind": "Sdk",
"version": "${EmscriptenVersion}",
"alias-to": {
"win-x64": "Microsoft.NET.Runtime.Emscripten.2.0.12.Python.win-x64",
"osx-x64": "Microsoft.NET.Runtime.Emscripten.2.0.12.Python.osx-x64",
"osx-arm64": "Microsoft.NET.Runtime.Emscripten.2.0.12.Python.osx-x64"
"win-x64": "Microsoft.NET.Runtime.Emscripten.2.0.21.Python.win-x64",
"osx-x64": "Microsoft.NET.Runtime.Emscripten.2.0.21.Python.osx-x64",
"osx-arm64": "Microsoft.NET.Runtime.Emscripten.2.0.21.Python.osx-x64"
}
},
"Microsoft.NET.Runtime.Emscripten.Sdk" : {
"kind": "Sdk",
"version": "${EmscriptenVersion}",
"alias-to": {
"win-x64": "Microsoft.NET.Runtime.Emscripten.2.0.12.Sdk.win-x64",
"linux-x64": "Microsoft.NET.Runtime.Emscripten.2.0.12.Sdk.linux-x64",
"osx-x64": "Microsoft.NET.Runtime.Emscripten.2.0.12.Sdk.osx-x64",
"osx-arm64": "Microsoft.NET.Runtime.Emscripten.2.0.12.Sdk.osx-x64"
"win-x64": "Microsoft.NET.Runtime.Emscripten.2.0.21.Sdk.win-x64",
"linux-x64": "Microsoft.NET.Runtime.Emscripten.2.0.21.Sdk.linux-x64",
"osx-x64": "Microsoft.NET.Runtime.Emscripten.2.0.21.Sdk.osx-x64",
"osx-arm64": "Microsoft.NET.Runtime.Emscripten.2.0.21.Sdk.osx-x64"
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/mono/wasm/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ MONO_LIBS = \
$(ICU_LIBDIR)/libicui18n.a

EMCC_DEBUG_FLAGS =-g -Os -s ASSERTIONS=1 -DDEBUG=1
EMCC_RELEASE_FLAGS=-Oz --llvm-opts 2
EMCC_RELEASE_FLAGS=-Oz

ifeq ($(NOSTRIP),)
STRIP_CMD=&& $(EMSDK_PATH)/upstream/bin/wasm-opt --strip-dwarf $(NATIVE_BIN_DIR)/dotnet.wasm -o $(NATIVE_BIN_DIR)/dotnet.wasm
Expand Down
2 changes: 1 addition & 1 deletion src/mono/wasm/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Note: `EMSDK_PATH` is set by default in `src/mono/wasm/Makefile`, so building ta
you are directly using the `dotnet build`, or `build.sh`.

* Alternatively you can install **correct version** yourself from the [Emscripten SDK guide](https://emscripten.org/docs/getting_started/downloads.html).
Do not install `latest` but rather specific version e.g. `./emsdk install 2.0.12`. See [emscripten-version.txt](./emscripten-version.txt)
Do not install `latest` but rather specific version e.g. `./emsdk install 2.0.21`. See [emscripten-version.txt](./emscripten-version.txt)

Make sure to set `EMSDK_PATH` variable, whenever building, or running tests for wasm.

Expand Down
2 changes: 1 addition & 1 deletion src/mono/wasm/emscripten-version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.0.12
2.0.21
4 changes: 2 additions & 2 deletions src/mono/wasm/wasm.proj
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@
<_EmccCommonFlags Include="-s ALLOW_MEMORY_GROWTH=1" />
<_EmccCommonFlags Include="-s NO_EXIT_RUNTIME=1" />
<_EmccCommonFlags Include="-s FORCE_FILESYSTEM=1" />
<_EmccCommonFlags Include="-s &quot;EXTRA_EXPORTED_RUNTIME_METHODS=['ccall', 'FS_createPath', 'FS_createDataFile', 'cwrap', 'setValue', 'getValue', 'UTF8ToString', 'UTF8ArrayToString', 'addFunction']&quot;" />
<_EmccCommonFlags Include="-s &quot;EXPORTED_RUNTIME_METHODS=['ccall', 'FS_createPath', 'FS_createDataFile', 'cwrap', 'setValue', 'getValue', 'UTF8ToString', 'UTF8ArrayToString', 'addFunction']&quot;" />
<_EmccCommonFlags Include="-s &quot;EXPORTED_FUNCTIONS=['_putchar']&quot;" />
<_EmccCommonFlags Include="--source-map-base http://example.com" />
<_EmccCommonFlags Include="-emit-llvm" />
Expand Down Expand Up @@ -190,7 +190,7 @@

<PropertyGroup>
<EmccConfigurationFlags Condition="'$(Configuration)' == 'Debug'">-g -Os -s ASSERTIONS=1 -DENABLE_NETCORE=1 -DDEBUG=1</EmccConfigurationFlags>
<EmccConfigurationFlags Condition="'$(Configuration)' == 'Release'">-Oz --llvm-opts 2 -DENABLE_NETCORE=1</EmccConfigurationFlags>
<EmccConfigurationFlags Condition="'$(Configuration)' == 'Release'">-Oz -DENABLE_NETCORE=1</EmccConfigurationFlags>
<StripCmd>&quot;$(EMSDK_PATH)/upstream/bin/wasm-opt&quot; --strip-dwarf &quot;$(NativeBinDir)dotnet.wasm&quot; -o &quot;$(NativeBinDir)dotnet.wasm&quot;</StripCmd>
<WasmObjDir>$(ArtifactsObjDir)wasm</WasmObjDir>
<WasmVersionFile>$(WasmObjDir)\emcc-version.txt</WasmVersionFile>
Expand Down

0 comments on commit d43b00a

Please sign in to comment.