-
Notifications
You must be signed in to change notification settings - Fork 3.8k
Change corlib version to a string, so that you can use uuidgen (or a git hash or github PR). #9787
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…it hash or github PR.
|
@monojenkins build deb with monolite |
|
@monojenkins build deb with monolite |
akoeplinger
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great, but we can simplify even more :)
configure.ac
Outdated
| MONO_CORLIB_COUNTER=26 | ||
| MONO_CORLIB_VERSION=`printf "1%02d%02d%02d%03d" $MONO_VERSION_MAJOR $MONO_VERSION_MINOR 0 $MONO_CORLIB_COUNTER` | ||
| MONO_CORLIB_UUID=07F6F369B78D4D709FE90C0EA002A970 | ||
| MONO_CORLIB_VERSION=`printf "1%02d%02d%02d%s" $MONO_VERSION_MAJOR $MONO_VERSION_MINOR 0 $MONO_CORLIB_UUID` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we can simplify this even more: the corlib version doesn't need to include the Mono version. It only needs to be unique which is already covered by the uuid.
I suggest we just do MONO_CORLIB_VERSION=07F6F369B78D4D709FE90C0EA002A970
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok.
configure.ac
Outdated
| # Use uuidgen or make up a really reliably unique string, such as a git hash | ||
| # or github PR number. Do not use anything personally identifiable or not particularly unique -- | ||
| # names, birthdays, branch names -- or use funny characters that | ||
| # will not interoperate with C, C++, sh, make, etc. -- spaces, percents, stars, dollars, parens, etc. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd remove all the trivia about PII/birthdays etc. and just mention the uuidgen command you need to generate the string in the right format.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok. I was going to script it but my perl was lacking uuid module. I’ll try again.
mono/metadata/appdomain.c
Outdated
| goto exit; | ||
| } | ||
| if (strcmp (version, MONO_CORLIB_VERSION) != 0) { | ||
| result = g_strdup_printf ("expected corlib version %s, found %s.", MONO_CORLIB_VERSION, version); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's improve the error message while we're here, something like: "The runtime didn't find the mscorlib.dll it expected. Expected interface version %s but found %s. Check that your runtime and class libraries are matching."
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agreed.
|
This will make it impossible to know which way the incompatibility is, i.e. whenever corlib is too new or too old. |
|
That's true but does it matter that much? |
|
We could always just add a simple time component to the front of the id, like y-m-d + uuid. The odds of the monolite changing multiple times per day are not very high, and we'll still have uniqueness in that case, but we'll be able to easily identify whether a given version is old or not. For precise time/date we can search for the ID in the repo history. |
|
There is no such thing as “old” or “new”, just matching or not. The version check was and is exact, not ordered. |
…is no implied ordering, no old or new. Add script for updating it. Wordsmith the error message.
|
The guid does include a high precision timestamp fyi. Or at least they used to. But it isn’t obvious from sight. I originally left the version parts in for people who like to see them and that still seems reasonable appeasement, albeit unnecessary, granted. |
|
@monojenkins build deb with monolite |
scripts/update-corlib-version
Outdated
| @@ -0,0 +1,18 @@ | |||
| #!/usr/bin/perl | |||
|
|
|||
| use warnings FATAL => 'all'; | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Use bash.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bash is to be avoided imho. Python is good choice though.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Every time I try to do anything in Bourne shell, many times across many years, I always come away disappointed and resolved not to waste more time on it.
It feels like a pile of nonsense and not an actually designed language.
This time the same.
For example:
!/usr/bin/bash
uuid=`uuidgen`
while IFS= read -r line; do
printf "%s\n" "${line//CORLIB_VERSION=.+/CORLIB_VERSION=$uuid}"
done
Close, but the .+ part of the regular expression doesn't work.
It is noticably slower than Perl, probably due to applying the regexp on every line instead of en masse once over the entire file.
Attempt to run regexp just once is faster when the regexp doesn't match but hangs and cannot control-c or z. Perhaps it kinda loops.
#!/bin/bash
contents=`cat configure.ac`
uuid=`uuidgen`
printf "%s\n" "${contents//CORLIB_VERSION=/CORLIB_VERSION=$uuid}"
Perhaps we can agree on Python?
But the Python 2.x vs. 3.x situation suggests Python developers do not take compatibility seriously enough.
Anyway, if Perl isn't acceptable, I wrote it in C also. That is easier and more portable than bash.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We definitely don't want a C version and even the bash/perl version is debatable.
I don't think we need a helper script for essentially running uuidgen and copy/pasting a string to a file, you can do that manually in 2 seconds.
Add a comment to configure.ac instead, something along the lines of:
# Use the uuidgen command to create a unique string
MONO_CORLIB_VERSION=07F6F369B78D4D709FE90C0EA002A970
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think command + copy/paste is a bit much to ask, when the automation is so easy. As an obvious side-benefit, the automation is now easy. It was kinda impossible before, because I would do such things as try to increment past concurrent PRs.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The C version is because Perl was objected to. I agree it is borderline. However, consider that you might want this is part of a nightly or weekly automation as well. i.e. 1. Otherwise we are promulgating binaries, which while built by infrastructure, derive from temporary private branches, not actual current merged master 2. Because the behavioral vs. calling interface variable is perhaps subtle and people won't abide by it, so rebuild every so often just in case.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wrong about infra needing to increment/change. Like today, it can rebuild and overwrite.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bash doesn't introduce a dependency. We don't want more dependencies than we actually need. Pretty easy to apply, especially in this case where all we want to do is invoke an executable. And as pointed by @akoeplinger, even easier: don't have a script but document what's needed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The dependency is optional as well.
mono/metadata/appdomain.c
Outdated
| mono_check_corlib_version (void) | ||
| { | ||
| const char* res; | ||
| char *result = NULL; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is a reason for these 2 functions to be separated. Revert it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It just seems like extra layers to read through and nobody else uses the inner layer. It is unnecessary exposure, even if static. But ok.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is the reason? It should be in comments in the code. As the code stands, it seems like extra unnecesary functionality to provide both functions.
I believe I met the spirit and details of this review.
Extra layer restored. There is no other user of the extra function so it seems like only extra work to understand and maintain. I tried bash and gave up after a while. I provided a different alternative to perl -- C. Python or C++ would also be good imho.
|
@monojenkins build deb with monolite |
|
@monojenkins build failed |
|
Good? |
|
@kg Debian package: ‘’’09:57:10 // Include does not exist: /build/mono-snapshot-pull-request-9787-2018.07.29+09.47.25-2018.07.29+09.47.25/mcs/class/System.Core/pipes_pns.sources |
luhenry
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nop, didn't met the spirit of the review. Stop dismissing whenever you don't want to meet all requested changes.
|
Was not sure of the etiquette. Will just delete the automation. |
Improve documentation, albeit to include one line of Perl.
|
@monojenkins build deb with monolite |
luhenry
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks much better than the previous iterations: it goes straight to the point, it is understandable why it happened, and it doesn't introduce new dependencies. Thank you for making the effort to take feedback into account 😉
|
@monojenkins build failed |
|
Looks good, thank you! |
|
I don't really see the difference between one optional line of Perl in a comment, vs. 8 in a file. |
* [linker] Move BCL size diff to nightly job It was too annoying on every PR * [mini] return gracefully from compile_special if a method can not be compiled the caller will check `error` anyway. It allows the machinery to try the interpreter instead. * [interp] add Span<T> intrinsics for get_Item and get_Length similar to https://github.com/mono/mono/pull/9086/files#diff-89fe30e1e87c5db21be052ddb0c8e28dR183 * address review feedback * [interp] Don't throw exception on -1 division * [bcl] Update BCL Linked Size (mono#9682) * [runtime] Return the result properly from mono_exception_walk_trace (). (mono#9675) [runtime] Return the result properly from mono_exception_walk_trace (). * Use `SafePasswordHandle` in the internal certificate APIs. (mono#9651) * `X509Helper`, `X509CertificateImpl`, `X509Certificate2Impl` and `ISystemCertificateProvider` now use `SafePasswordHandle` instead of strings. * `X509Certificate`: actually implement `SecurePassword` based APIs using `SafePasswordHandle`. * `mono_btls_pkcs12_import()`: when passed an empty password, try both the empty string and null. * [MacOS] On Mac, use the copyfile API to copy files (mono#9642) [MacOS] On Mac, use the copyfile API to copy files Rebase of mono#9038 with added fix for the failing unit tests. Note that there's a race condition in the check between `source file == destination file` and the `copyfile` call, but a similar race condition already exists there in the current code except the outcome is different. * [mcs] Don't wrap exception expression in contextual return. Fixes mono#9505 * Remove ves_icall_System_AppDomain_GetIDFromDomain. (mono#9674) * Remove excess code -- strings are already nul terminated. (mono#9697) * System.IO.Pipes from CoreFX (mono#9573) Rework of mono#5448, contributes to mono#7143. The anonymous pipes were tested on macOS, build was tested only on few configurations (hoping to solve some issue through Jenkins builds). Named pipe tests get stuck on macOS, but it may be unrelated Xunit issue and needs some proper debugging. @Therzok, do you know of anything else that is missing for parallel MSBuild? Do you have some test environment for it by chance? * [System.Reflection] CoreFX import for set of simple types. (mono#9693) Part of mono#9660. The imported CoreFX types: - AmbiguousMatchException - AssemblyAlgorithmIdAttribute - AssemblyCompanyAttribute - AssemblyConfigurationAttribute - AssemblyConfigurationAttribute - AssemblyContentType - AssemblyCopyrightAttribute - AssemblyCultureAttribute - AssemblyDefaultAliasAttribute - AssemblyDelaySignAttribute - AssemblyDescriptionAttribute - AssemblyFileVersionAttribute - AssemblyFlagsAttribute - AssemblyInformationalVersionAttribute - AssemblyKeyFileAttribute - AssemblyKeyNameAttribute - AssemblyMetadataAttribute - AssemblyNameFlags - AssemblyProductAttribute - AssemblySignatureKeyAttribute - AssemblyTitleAttribute - AssemblyTrademarkAttribute - AssemblyTrademarkAttribute - AssemblyVersionAttribute - BindingFlags - CallingConventions - CustomAttributeFormatException - DefaultMemberAttribute - EventAttributes - FieldAttributes - GenericParameterAttributes - ICustomAttributeProvider - ImageFileMachine - InterfaceMapping - IntrospectionExtensions - InvalidFilterCriteriaException - IReflect - IReflectableType - MemberFilter - MemberTypes - MethodAttributes - MethodImplAttributes - ObfuscateAssemblyAttribute - ObfuscationAttribute - ParameterAttributes - ParameterModifier - PortableExecutableKinds - ProcessorArchitecture - PropertyAttributes - ReflectionContext - ReflectionTypeLoadException - ResourceAttributes - TargetException - TargetInvocationException - TargetParameterCountException - TypeAttributes - TypeFilter * [bcl] Update BCL Linked Size * [coop] Refactor suspend policy selection code Untangle the configure-time and runtime suspend policy defaults. * New MONO_THREADS_SUSPEND env var to select suspend policy Set to one of "preemptive", "coop" or "hybrid". Unlike the old MONO_ENABLE_COOP, MONO_ENABLE_COOP_SUSPEND, MONO_ENABLE_HYBRID_SUSPEND, the value of MONO_THREADS_SUSPEND will take priority over the configure flags default. For compatability the old environment variables will be respected if neither MONO_THREADS_SUSPEND nor a configure flag was set. A warning will be emitted if MONO_THREADS_SUSPEND isn't set. (Rationale: maybe the environment set both because they're not sure which version of Mono they will be running - so don't nag them). * [coop] Define mono_threads_is_blocking_transition_enabled in terms of suspend policy Instead of digging around in the environment for the coop and hybrid suspend settings, define in terms of mono_threads_suspend_policy (or the MONO_ENABLE_BLOCKING_TRANSITION env var as before). * [runtime] Removes unused icalls * Be sure always assign out parameter. (mono#9701) * NOHANDLES(ves_icall_Interop_Sys_DoubleToString) (mono#9702) * [Coop] NOHANDLES(ReleaseMutex_internal), remove some error_init, (mono#9704) and clear last error in Win32 path like on Unix. * [Coop] Convert CreateProcess and ShellExecute. (mono#9699) * [System]: Remove two `X509Certificate2Test` tests. Both `Certificate_11_Properties` and `Certificate_14_Properties` use an invalid certificate that violates X.690 11.8.2 (UTCTime under a DER encoding). This will no longer be supported once we switch to CoreFX's PAL code. See also dotnet/corefx#31293. * Revert CharUnicodeInfo to reference-sources (Big Endian issue) (mono#9711) Temporarily switch back to ref-source impl for `CharUnicodeInfo` which contains a few special BE patches while I am trying to upstream them. Fixes mono#9684 * Fix up behaviour of verbose method with arguments (mono#9087) * Fix up behaviour of verbose method with arguments Given a method spec which looks like: `MainClass:Do(int,int,int)` Via f024e82 the code would match 3 methods: `MainClass:Do(int`, `int`, `int)`, crashing the runtime. Accept the multiple method matches via `;`, rather than `,`. Now, the behaviour is changed so: `MainClass:Do(int,int,int);MainClass:Do(int,int)` Get parsed as: `MainClass:Do(int,int,int)` `MainClass:Do(int,int)` * Add tests * add test file and make tests actually output something * Smarter unit test around disassembling methods * Try single quoting environment variable value * Try using non-throwing setter * Move generated resource files from System and System.Security into corlib. (mono#9665) * Make `corlib` internals visible to `System.Security` on all profiles, not just monotouch watch. * Moves all generated `SR` files and their generation logic from `System` and `System.Security` into `corlib`. Since `corlib` internals are visible to these assemblies, we don't need to duplicate the resource strings. * Cleanup the `RESX_RESOURCE_STRING` is `corlib` and sort them alphabetically. * Add the internal `Internal.Cryptography.Helpers` helper class from CoreFX to `corlib` (currently unused, but "Blue" will need it). * [build] Update xunit to 2.4 version This exposed few issue in CoreFX tests * [corlib]: Cleanup `X509Certificate` implementation and sync it with CoreFx. (mono#9650) * [corlib]: Cleanup `X509Certificate` implementation and sync it with CoreFX. Completely refactored the `X509Certificate` implementation to make it based very closely on CoreFX. We cannot fully switch to their implementation yet because we are missing things and they also have a few issues in their implementation. However, this will make it a lot easier to do this at a later time. The internal `X509CertificateImpl` has been cleaned up as well, using properties instead of methods in most places and the `ToString()` implementation is now shared between all platforms. * `X509Certificate.CreateFromSignedFile()`: in CoreFX, this is the same as `CreateFromCertFile()`. Our old implementation was incomplete and did not verify the signature - we even had a test where loading a certificate with an invalid signature was supposed to work; this test has been disabled because we're now throwing an exception. * `X509CertificateImpl.KeyAlgorithmParameters`: this is supposed to throw `CryptographicException` on error, see `Certificate13` in `X509CertificateTest.cs`. * We now match CoreFX's behavior regarding serialization - while the `X509Certificate` type is still marked as `[Serializable]`, we now throw `PlatformNotSupportedException` when attempting to serialize or deserialize it. * Bump API snapshot submodule * [csproj] Update project files * [tests] Disable verbose.exe test on Windows See mono#9739 * [corlib] Bring back serialization ctors/methods for X509Certificate (mono#9745) They were replaced with PNSE in mono#9650 but that broke xUnit 2.4.0. * [bcl] Update BCL Linked Size (mono#9747) Size Diff: https://jenkins.mono-project.com/job/test-mono-mainline-bclsize/18/BCL_20Size_20Diff/ Commits since last update: .NET 4.x: 8b25769...770ad9e MonoTouch: 8b25769...770ad9e MonoDroid: 8b25769...770ad9e * [interp] Improve icall perf (mono#9645) * [interp] Refactor MINT_ICALL opcodes Remove integer versions, since they add unnecessary complexity, and with some signatures we were already implicitly casting int to gpointer. * [interp] Use fast versions for icalls * [interp] Include more fast pinvoke/icall signatures These cover almost all icalls * [interp] Fix fast icall return value The returned value needs to be converted to the stackval representation * [runtime] Refactor cattr decoding. (mono#9724) Return objects from load_cattr_value () using an additional out parameter. Add a variant of mono_reflection_create_custom_attr_data_args () which can only decode a subset of cattr types, but it doesn't allocate any objects. Use this in marshal.c/marshal-ilgen.c to avoid allocating objects while decoding FixedBufferAttribute and UnmanagedFunctionPointerAttribute. * [Coop] nohandles() System.Math and System.MathF. (mono#9741) * Checkpoint tests.make update to use gensources.exe * Manually specify the search directory for libraries when compiling gensources because it can't find it for some reason * Checkpoint * Checkpoint * Checkpoint * Bug fixes to gensources and the way tests.make invokes it. Compensate for the gross behavior where tests sources files are not relative to their location. * Fix typo * Okay, xtests sources files ARE relative to their location * Remove missing directory from microsoft.csharp.dll.sources * Workaround for gensources treating 0 result files as an error when we didn't load any non-empty sources files * Fix parse errors in GetRelativePath and add to the ErrorCount when one occurs so the build will fail * Handle invalid include paths. Resolve include paths relative to the .sources file even if source file names are relative to another folder. * Fix included sources files not inheriting overridden path directory * Remove invalid paths from exclusions files * Ignore missing files/directories in exclusions lists since they are harmless errors * Get rid of duplicate definition warnings for the gensources rule * Handle extra whitespace in include directives * Checkpoint: Move gensources build to basic.make after profile check and invoke that version directly when we need gensources. * Checkpoint * Fix build failure if gensources destination path doesn't exist yet by moving it to build. * Fix wrong logic for finding the right profiles/platforms folders * Fix xtest gensources invocation * Fix mode damage * Remove debugging messages * Checkpoint: Move vars to rules.make * Try moving gensources vars to rules.make * Revert "Try moving gensources vars to rules.make" This reverts commit 496f82e. * [Coop] A bunch of nohandles(). (mono#9738) * [Coop] System.IO mark all remaining NOHANDLES(). * Functions take no parameters, not any parameters -- () vs. (void). * [Coop] Mark System.Threading.Interlocked as mostly NOHANDLES(). * [Coop] ves_icall_System_Threading_Thread_MemoryBarrier is NOHANDLES(). * [Coop] System.Threading volatile reads/writes are NOHANDLES(). * Make YieldInternal NOHANDLES and remove two potential layers. * [Coop] Make ves_icall_System_Threading_Thread_current_lcid NOHANDLES(). * [Coop] mono_100ns_ticks nohandles. * [Coop] More nohandles volatile reads/writes. * [Coop] NOHANDLES() System.Security.SecurityManager. * [System.Native] Build a reduced library on Android and iOS * Fix copy/paste error. Use size parameter for non-moving GC allocation. Remove return statements from void function to silence warnings. * Revert "[System.Native] Build a reduced library on Android and iOS" This reverts commit 1e9be63. It doesn't appear to been run through CI and does appear to be breaking things. mono#9776 * [cxx] C++ deprecates the "register" keyword. * [cxx] C++ does not have designated initializers. Current clang supports them, current g++ has partial support, Centos6 g++ 4.4 has no support. * [cxx] C++11 needs spaces around string pieces to disambiguate from user defined literals. Or at least on one side but we do both for clarity. e.g. #define PRIdMAX "lld" (inttypes.h) 123"PRIdMAX"345" should be instead "123" PRIdMAX "345" * [cxx] Make debugger-engine.c valid C++. * [cxx] Convert debugger-agent.c. * [cxx] Convert interpreter. * [Coop] Convert ves_icall_System_Reflection_Module_ResolveStringToken. (mono#9743) * [Coop] Convert ves_icall_System_Reflection_Module_ResolveStringToken. * Use System.Security.Policy.Publisher from corefx (they essentially stubbed it out). (mono#9749) * Use System.Security.Policy.Publisher from corefx (they essentially stubbed it out). Fixes the XUnit 2.4 problem. * Use `PublisherMembershipCondition` from CoreFX as well (stubbed out in there) and remove the tests. * Bump API snapshot submodule * Update csproj * Fix typo * Use correct domain (so far no difference), thanks @alexischr. (mono#9784) * [interp] Overflow fixes (mono#9688) * [interp] Fix some conv ovf opcodes * [interp] Correctly hande a few conv ovf cases For conversion from unsigned value to i1 and i2. * [interp] Fix multiplication overflow case * [interp] Remove some constants from code * [cxx] Build/CI support for C++. (mono#9731) * [cxx] Build/CI support for C++. configure -enable-cplusplus and CI_TAGS=cplusplus https://jenkins.mono-project.com//job/test-mono-mainline-linux-cplusplus/ * [cxx] Rename CPLUSPLUS/cplusplus to CXX/cxx. * [cxx] Add C++ build support to mini. * [cxx] Jenkins/CI support for cxx not just cplusplus. * [bcl] Update BCL Linked Size (mono#9791) * Change corlib version to a string, so that you can use uuidgen (or a git hash or github PR). (mono#9787) * [bcl] Include all .sources files in the tarball (mono#9803) mono@0f0e318 added a new pipes_pns.sources file but we forgot to add it to EXTRA_DISTFILES so it gets included in the tarball. Given that this happens almost all the time when we add a new .sources file we should just always include all *.sources * Fix comparison of IntPtr with null (mono#9800) See dotnet/corefx#31457 * Apply F# portable pdb debug fix for pinvokes & bump (mono#9792) It wasn't possible to debug any F# app that contained PInvokes. The F# compiler omitted MethodDebuginformation for PInvokes which in turn caused Mono to fail on an assertion. ``` * Assertion at metadata.c:1117, condition `idx < t->rows' not met ``` * Bump submodule for mono#9684 and mono/corefx#108 (mono#9773) * [llvm] Bump llvm to release_60/fc854b8ec5873d294b80afa3e6cf6a88c5c48886. (mono#9786) [llvm] Bump llvm to release_60/fc854b8ec5873d294b80afa3e6cf6a88c5c48886. Fixes mono#9750. * [jit] Avoid checking ins->inst_left in MONO_IS_COND_BRANCH_NOFP (), its not initialized by MONO_INST_NEW (). (mono#9790) [jit] Avoid checking ins->inst_left in MONO_IS_COND_BRANCH_NOFP (), its not initialized by MONO_INST_NEW (). * [cxx] Keywords: new => new_, typename => type_nam, namespace => name_space, (mono#9737) [cxx] Keywords: new => new_, typename => type_name, namespace => name_… …space, conditionally class => super_class. * [runtime] Make collect_threads helper pin MonoInternalThread objects * [jit] Clean up the handling of the lower/higher parts of long values on 32 bit platforms. (mono#9807) Instead of accessing them using the inst_ls_word/inst_ms_word macros which use the union in MonoInst.data, access them normally using MonoInst.Data.i8const. * Add support for Blazor custom interop support. (mono#9713) * Add support for Blazor custom interop support. This adds additional ability to perform unmarshalled calls for advanced but high-performance shared-memory interop. * Note: * This is only safe in Blazor's case because of its exact usage patterns. * Add dotnet_support.js backing file. * Fix tarballs again (mono#9810) * Add GC Unsafe thread state transitions to MONO_API functions - Fourth Edition (mono#9630) * [appdomain] MONO_API mono_domain_set needs GC Unsafe * [runtime] MONO_API mono_domain_set_config needs GC Unsafe * [runtime] MONO_API mono_dllmap_insert sometimes needs GC Unsafe When adding a global mapping, don't do the state transition because the thread may not be attached yet. When adding a per-image mapping, do the transition. * [runtime] MONO_API mono_g_hash_table_insert needs GC Unsafe * [runtime] MONO_API mono_g_hash_table_new_type needs GC Unsafe * [runtime] MONO_API mono_gc_reference_queue_new needs GC Unsafe * [runtime] mono_thread_detach_if_exiting thread state change 1. Mark it external only, it's unused in the runtime. 2. If detaching, switch to GC Unsafe before detaching * [metadata] Make mono_class_get_fields external only - Runtime should use mono_class_get_fields_internal - MONO_API mono_class_get_fields needs GC Unsafe * [runtime] MONO_API mono_gc_reference_queue_add needs GC Unsafe * [metadata] Make mono_class_get_name and namespace external only - Runtime should use m_class_get_name and m_class_get_name_space - MONO_API mono_class_get_name and mono_class_get_namespace need GC Unsafe * [metadata] MONO_API mono_class_get_parent needs GC Unsafe - mark it external only; runtime should use m_class_get_parent * [metadata] Make mono_class_is_delegate external only - runtime should use m_class_is_delegate - MONO_API mono_class_is_delegate needs GC Unsafe * [metadata] Make mono_class_is_valuetype external only - runtime should use m_class_is_valuetype - MONO_API mono_class_is_valuetype needs GC Unsafe * [metadata] Make mono_class_is_enum external only - runtime should use m_class_is_enum_type - MONO_API mono_class_is_enum needs GC Unsafe * [metadata] Mark mono_class_get_element_class external only - runtime should use m_class_get_element_class - MONO_API mono_class_get_element_class needs GC Unsafe * w32file-unix.c fix warnings about unused locals (mono#9823) w32file-unix.c:2361:7: warning: unused variable 'ret_utime' [-Wunused-variable] gint ret_utime; ^ w32file-unix.c:2358:15: warning: unused variable 'dest_fd' [-Wunused-variable] gint src_fd, dest_fd; ^ w32file-unix.c:2358:7: warning: unused variable 'src_fd' [-Wunused-variable] gint src_fd, dest_fd; ^ w32file-unix.c:2362:7: warning: unused variable 'syscall_res' [-Wunused-variable] gint syscall_res; ^ 4 warnings generated. * [Coop] Convert ves_icall_MonoField_GetFieldOffset. (mono#9742) * Fix System.Drawing on 64-bit macOS. (mono#9824) Carbon implementation now throws exception instead of crashing in the mismatched p/invoke calls. Cocoa implementation now support 64-bit mode and uses the handle of `NSView` that is passed in instead of relying on `NSGraphicsContext.CurrentContext`. It also fixes handling of flipped views. Requires up to date libgdiplus. * Really fix CoreR[FT] version of System.Decimal for big endian (mono#9828) The version imported and attempted to patch didn't work fully. This preserves the .NET representation while converting if directives to runtime checks, which CoreCLR inlines. Testing was done poking some values in the REPL and running some test suites (System.Json, System.Decimal) that broke as a result. mcs should also properly handle constants; again, the "bits" inside are consistent with amd64, and just converted as needed. Unless I fucked up, should fix mono#9772. * [utils] Sane assert instead of crash on allocation failure * [LinkerDescriptor] remove remoting feature from MonoMethodMessage Fixes those failures on Xamarin.iOS: > 2018-07-30 21:16:19.931 monotouchtest[49618:80799179] error: * Assertion at /Users/builder/jenkins/workspace/xamarin-macios-pr-builder/external/mono/mono/metadata/object.c:7896, condition `init_message_method != NULL' not met > 2018-07-30 21:16:19.931 monotouchtest[49618:80799179] critical: Stacktrace: > > 2018-07-30 21:16:19.932 monotouchtest[49618:80799179] critical: at <unknown> <0xffffffff> > 2018-07-30 21:16:19.932 monotouchtest[49618:80799179] critical: at (wrapper managed-to-native) object.__icall_wrapper_mono_delegate_begin_invoke (object,intptr) <0x00012> > 2018-07-30 21:16:19.932 monotouchtest[49618:80799179] critical: at (wrapper delegate-begin-invoke) <Module>.begin_invoke_IAsyncResult__this___AsyncCallback_object (System.AsyncCallback,object) [0x00015] in <643e5a0761d140d1977f1bbd2bd72153>:0 > 2018-07-30 21:16:19.932 monotouchtest[49618:80799179] critical: at MonoTouchFixtures.AVFoundation.AVAssetImageGeneratorTest.GenerateCGImagesAsynchronously () [0x00021] in /Users/builder/jenkins/workspace/xamarin-macios-pr-builder/tests/monotouch-test/AVFoundation/AVAssetImageGeneratorTest.cs:126 > 2018-07-30 21:16:19.933 monotouchtest[49618:80799179] critical: at (wrapper runtime-invoke) object.runtime_invoke_void__this__ (object,intptr,intptr,intptr) [0x0004f] in <643e5a0761d140d1977f1bbd2bd72153>:0 > 2018-07-30 21:16:19.933 monotouchtest[49618:80799179] critical: at <unknown> <0xffffffff> > 2018-07-30 21:16:19.934 monotouchtest[49618:80799179] critical: at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&) <0x00012> > 2018-07-30 21:16:19.934 monotouchtest[49618:80799179] critical: at System.Reflection.MonoMethod.Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) [0x0003b] in /Library/Frameworks/Xamarin.iOS.framework/Versions/11.15.0.36/src/Xamarin.iOS/mcs/class/corlib/System.Reflection/MonoMethod.cs:305 > 2018-07-30 21:16:19.934 monotouchtest[49618:80799179] critical: at System.Reflection.MethodBase.Invoke (object,object[]) [0x00000] in /Library/Frameworks/Xamarin.iOS.framework/Versions/11.15.0.36/src/Xamarin.iOS/mcs/class/referencesource/mscorlib/system/reflection/methodbase.cs:229 > 2018-07-30 21:16:19.934 monotouchtest[49618:80799179] critical: at NUnit.Framework.Internal.Reflect.InvokeMethod (System.Reflection.MethodInfo,object,object[]) [0x00009] in /Users/builder/jenkins/workspace/xamarin-macios-pr-builder/external/mono/external/nunit-lite/NUnitLite-1.0.0/src/framework/Internal/Reflect.cs:215 > 2018-07-30 21:16:19.935 monotouchtest[49618:80799179] critical: at NUnit.Framework.Internal.Commands.TestMethodCommand.RunNonAsyncTestMethod (NUnit.Framework.Internal.TestExecutionContext) [0x00000] in /Users/builder/jenkins/workspace/xamarin-macios-pr-builder/external/mono/external/nunit-lite/NUnitLite-1.0.0/src/framework/Internal/Commands/TestMethodCommand.cs:114 Also see https://github.com/xamarin/xamarin-macios/blob/10d98e67d88231fd41218a93b92d42914550ee10/tools/mtouch/Tuning.cs#L137 @akoeplinger mentions further: > we even have custom code to preserve MonoMethodMessage in the XI linker: > https://github.com/xamarin/xamarin-macios/blob/a563a66c342d2e982a9648fbfd5ce9c361bea07e/tools/linker/MonoTouch.Tuner/RemoveCode.cs#L178-L180 Fixes regression introduced by mono#8055
…git hash or github PR). (mono/mono#9787) Commit migrated from mono/mono@c6b8cec
No description provided.