jetbrains / rd Goto Github PK
View Code? Open in Web Editor NEWReactive Distributed communication framework for .NET, Kotlin, C++. Inspired by Rider IDE.
License: Apache License 2.0
Reactive Distributed communication framework for .NET, Kotlin, C++. Inspired by Rider IDE.
License: Apache License 2.0
//todo atomicy comment
Currently, there are some methods in mutable Rd collections (all implementors of IMutableViewableMap
, IMutableViewableList
, and IMutableViewableSet
) that will modify the collections but won't trigger the accompanying action (such as taking a cookie, writing the value to the protocol etc.).
This is caused by two issues:
IMutableViewableMap<K, V> by map
clause in the RdMap
's inheritance list) will just call all the methods from the base object without wrapping them, if they aren't overridden in the implementing class. So, this delegation should be removed.Map::entries: MutableCollection<Map.Entry>
, or iterator: MutableIterator
, or even MutableMap.MutableEntry
.Particularly problematic methods in this regard are variations of MutableList::addAll
and MutableMap::putAll
(soon to be fixed), but I'm not sure about a systematic solution, yet.
I have observed com.jetbrains.rd.util.test.cases.QueueProcessorTest.test1
failure on Linux. Here's the stack trace, test logs + stdout are attached below (see file rd-kt/rd-core/build/reports/tests/test/index.html
in the archive).
org.opentest4j.AssertionFailedError: expected: <[1]> but was: <[1, 2, 3]>
at org.junit.jupiter.api.AssertionUtils.fail(AssertionUtils.java:55)
at org.junit.jupiter.api.AssertionUtils.failNotEqual(AssertionUtils.java:62)
at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177)
at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1124)
at com.jetbrains.rd.util.test.cases.QueueProcessorTest.test1(QueueProcessorTest.kt:34)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:686)
at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:205)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:201)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:137)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:71)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:248)
at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$5(DefaultLauncher.java:211)
at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:226)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:199)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:132)
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
at com.sun.proxy.$Proxy2.stop(Unknown Source)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:133)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182)
at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164)
at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:414)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
at java.base/java.lang.Thread.run(Thread.java:829)
In rd-cpp lifetime we receive in .set method of RdEndpoint is RdEndpoint lifetime instead of lifetime controlled by client.All resources linked to callback lifetime survive whole session unlike rd-kt and rd-net implementation.
GradleGenerationSpec::directory in RdGenPlugin parses to single file name, which passed to generator. It doesn't allow to generate model to several output directories at the same time not to calling fun generator
more than once. Even in this case rd-gen works repeatedly
I am getting this error during the tests: Can't wait for executeIfAlive for more than 500 ms.
frontend.log
I think it is from this code:
Need to add stacktrace to that error in the log.
https://jetbrains.slack.com/archives/GH9S2GGRG/p1589581429434400
I am tried JetBrains.Lifetimes + Microsoft.Extensions.DependencyInjection for learn
I pass lifetime(struct) to the constructor of the objects being created by container and got strange error when I use .Bracket
it works 2 times correctly, and the third time an error.
System.ArrayTypeMismatchException: 'Attempted to access an element as a type incompatible with the array.'
within JetBrains.Lifetimes (LifetimeDefinition.cs)
Of course, I understand that lifetime is struct and it is not very correct to use it with IoC in this way, but I would like to understand the cause of the error.
Even if the IoC breaks the structure, but after all, lifetime only keeps a reference to the definition, to which the container has nothing to do.
I was unable to write test code with reproducible error, but I shrink project where it still reproduces
netcore 3.1, JetBrains.Lifetimes 2020.2.3 (or this repo), win 10 x64, WPF, vs2019
I'm glad to find out that RD is open source. But there is almost no documentation. Can you give your advice on what is the best way to get some more info and/or help?
Is there some sort of community support to encourage adoption of RD? Is there a means like Slack channel, forum etc?
I want to evaluate JetBrains RD as a potential basis for integrating JetBrains MPS with our in-house created .NET modelling environment. Our use case seems quite similar to Rider, the context n which RD was created.
"C# does not offer built-in support for deconstructing non-tuple types. However, as the author of a class, a struct, or an interface, you can allow instances of the type to be deconstructed by implementing one or more Deconstruct methods."
See https://docs.microsoft.com/en-us/dotnet/csharp/deconstruct
It would be great to see this in rd-gen! Even if it's supported only in C#7 and higher versions.
It was working on Gradle 6.5
Error:
> Task :jetbrains-rider:generateAwsProjectModel
Reading hash from D:\aws-toolkit-jetbrains\jetbrains-rider\build\rdgen\.rdgen
Hashes are different at key 'file: C:\Users\<user>\.gradle\caches\modules-2\files-2.1\com.jetbrains.rd\rd-gen\0.193.146\38e03009032d0ea8ff19183cb90afdca3e6f09e3\rd-gen-0.193.146.jar', oldHash: 2020-05-19_09:12:06.2
80, newHash:
Temporary folder created: C:\Users\<user>\AppData\Local\Temp\rdgen-16595563179377353196
Searching for Kotlin compiler
Compiling sources from 'D:\aws-toolkit-jetbrains\jetbrains-rider\protocol\model\project' to 'C:\Users\<user>\AppData\Local\Temp\rdgen-16595563179377353196'
User classpath: 'D:\aws-toolkit-jetbrains\jetbrains-rider\build\riderRD-2019.3.4\lib\rd\rider-model.jar'
Rdgen default classpath: 'C:\Users\<user>\.gradle\caches\jars-8\c0a48cb2f5b7c3e7dd64ce031908edd4\rd-gen-0.193.146.jar;C:\Users\<user>\.gradle\caches\jars-8\b286736391573ccfb4d4a500279a066b\kotlin-stdlib-jdk8-1.3.
70.jar;C:\Users\<user>\.gradle\caches\jars-8\1e6c5a27e924f3498df588a40253ce5a\kotlin-stdlib-jdk7-1.3.70.jar;C:\Users\<user>\.gradle\caches\jars-8\1be4573a90e903c998485b49504b2e84\kotlin-reflect-1.3.50.jar;C:\User
s\<user>\.gradle\caches\jars-8\a87785aaeadbb9423aaef6ceba52a690\kotlin-stdlib-1.3.70.jar;C:\Users\<user>\.gradle\caches\jars-8\6318226462ad1e7ffc43ccf52d56b099\kotlin-stdlib-common-1.3.70.jar;C:\Users\<user>\.g
radle\caches\jars-8\a4fe510e7beb8b97871b47d87c0bd50b\kotlin-compiler-embeddable-1.3.70.jar;C:\Users\<user>\.gradle\caches\jars-8\dde97575a599bd3e140dd938a7aed4fa\kotlin-reflect-1.3.72.jar;C:\Users\<user>\.gradle\
caches\jars-8\6e1c96bc5e566162587181c85dab9756\kotlin-scripting-jvm-1.3.70.jar;C:\Users\<user>\.gradle\caches\jars-8\b7970a59300ebc4e2f7887783c16e693\kotlin-scripting-common-1.3.70.jar;C:\Users\<user>\.gradle\cac
hes\jars-8\768cf1021ee3bdc425b9b2ae1289f2f1\kotlin-stdlib-jdk8-1.3.72.jar;C:\Users\<user>\.gradle\caches\jars-8\421b0c68a25f5d684ea66be525dfcf66\kotlin-stdlib-jdk7-1.3.72.jar;C:\Users\<user>\.gradle\caches\jars-8
\70d15c94187de212f9a927dc262ddd63\kotlin-stdlib-1.3.72.jar;C:\Users\<user>\.gradle\caches\jars-8\18e6bc6874baa1a066bce674522f54bf\kotlin-stdlib-common-1.3.72.jar;C:\Users\<user>\.gradle\caches\jars-8\b2c292c88723
c40ac5c567f0ca5e67c6\kotlin-script-runtime-1.3.70.jar;C:\Users\<user>\.gradle\caches\jars-8\65abeebf44db8fc52a0efcfb702739ec\kotlin-compiler-1.3.50.jar;C:\Users\<user>\.gradle\caches\jars-8\e6f0c38292333779074fe9
18cc0ffc34\kotlin-script-runtime-1.3.50.jar'
Resulting kotlinc classpath: 'D:\aws-toolkit-jetbrains\jetbrains-rider\build\riderRD-2019.3.4\lib\rd\rider-model.jar;C:\Users\<user>\.gradle\caches\jars-8\c0a48cb2f5b7c3e7dd64ce031908edd4\rd-gen-0.193.146.jar;C:\Us
ers\<user>\.gradle\caches\jars-8\b286736391573ccfb4d4a500279a066b\kotlin-stdlib-jdk8-1.3.70.jar;C:\Users\<user>\.gradle\caches\jars-8\1e6c5a27e924f3498df588a40253ce5a\kotlin-stdlib-jdk7-1.3.70.jar;C:\Users\alfred
br\.gradle\caches\jars-8\1be4573a90e903c998485b49504b2e84\kotlin-reflect-1.3.50.jar;C:\Users\<user>\.gradle\caches\jars-8\a87785aaeadbb9423aaef6ceba52a690\kotlin-stdlib-1.3.70.jar;C:\Users\<user>\.gradle\caches\j
ars-8\6318226462ad1e7ffc43ccf52d56b099\kotlin-stdlib-common-1.3.70.jar;C:\Users\<user>\.gradle\caches\jars-8\a4fe510e7beb8b97871b47d87c0bd50b\kotlin-compiler-embeddable-1.3.70.jar;C:\Users\<user>\.gradle\caches\j
ars-8\dde97575a599bd3e140dd938a7aed4fa\kotlin-reflect-1.3.72.jar;C:\Users\<user>\.gradle\caches\jars-8\6e1c96bc5e566162587181c85dab9756\kotlin-scripting-jvm-1.3.70.jar;C:\Users\<user>\.gradle\caches\jars-8\b7970a
59300ebc4e2f7887783c16e693\kotlin-scripting-common-1.3.70.jar;C:\Users\<user>\.gradle\caches\jars-8\768cf1021ee3bdc425b9b2ae1289f2f1\kotlin-stdlib-jdk8-1.3.72.jar;C:\Users\<user>\.gradle\caches\jars-8\421b0c68a25
f5d684ea66be525dfcf66\kotlin-stdlib-jdk7-1.3.72.jar;C:\Users\<user>\.gradle\caches\jars-8\70d15c94187de212f9a927dc262ddd63\kotlin-stdlib-1.3.72.jar;C:\Users\<user>\.gradle\caches\jars-8\18e6bc6874baa1a066bce67452
2f54bf\kotlin-stdlib-common-1.3.72.jar;C:\Users\<user>\.gradle\caches\jars-8\b2c292c88723c40ac5c567f0ca5e67c6\kotlin-script-runtime-1.3.70.jar;C:\Users\<user>\.gradle\caches\jars-8\65abeebf44db8fc52a0efcfb702739e
c\kotlin-compiler-1.3.50.jar;C:\Users\<user>\.gradle\caches\jars-8\e6f0c38292333779074fe918cc0ffc34\kotlin-script-runtime-1.3.50.jar'
kotlinc -cp D:\aws-toolkit-jetbrains\jetbrains-rider\build\riderRD-2019.3.4\lib\rd\rider-model.jar;C:\Users\<user>\.gradle\caches\jars-8\c0a48cb2f5b7c3e7dd64ce031908edd4\rd-gen-0.193.146.jar;C:\Users\<user>\.grad
le\caches\jars-8\b286736391573ccfb4d4a500279a066b\kotlin-stdlib-jdk8-1.3.70.jar;C:\Users\<user>\.gradle\caches\jars-8\1e6c5a27e924f3498df588a40253ce5a\kotlin-stdlib-jdk7-1.3.70.jar;C:\Users\<user>\.gradle\caches\
jars-8\1be4573a90e903c998485b49504b2e84\kotlin-reflect-1.3.50.jar;C:\Users\<user>\.gradle\caches\jars-8\a87785aaeadbb9423aaef6ceba52a690\kotlin-stdlib-1.3.70.jar;C:\Users\<user>\.gradle\caches\jars-8\6318226462ad
1e7ffc43ccf52d56b099\kotlin-stdlib-common-1.3.70.jar;C:\Users\<user>\.gradle\caches\jars-8\a4fe510e7beb8b97871b47d87c0bd50b\kotlin-compiler-embeddable-1.3.70.jar;C:\Users\<user>\.gradle\caches\jars-8\dde97575a599
bd3e140dd938a7aed4fa\kotlin-reflect-1.3.72.jar;C:\Users\<user>\.gradle\caches\jars-8\6e1c96bc5e566162587181c85dab9756\kotlin-scripting-jvm-1.3.70.jar;C:\Users\<user>\.gradle\caches\jars-8\b7970a59300ebc4e2f788778
3c16e693\kotlin-scripting-common-1.3.70.jar;C:\Users\<user>\.gradle\caches\jars-8\768cf1021ee3bdc425b9b2ae1289f2f1\kotlin-stdlib-jdk8-1.3.72.jar;C:\Users\<user>\.gradle\caches\jars-8\421b0c68a25f5d684ea66be525dfc
f66\kotlin-stdlib-jdk7-1.3.72.jar;C:\Users\<user>\.gradle\caches\jars-8\70d15c94187de212f9a927dc262ddd63\kotlin-stdlib-1.3.72.jar;C:\Users\<user>\.gradle\caches\jars-8\18e6bc6874baa1a066bce674522f54bf\kotlin-stdl
ib-common-1.3.72.jar;C:\Users\<user>\.gradle\caches\jars-8\b2c292c88723c40ac5c567f0ca5e67c6\kotlin-script-runtime-1.3.70.jar;C:\Users\<user>\.gradle\caches\jars-8\65abeebf44db8fc52a0efcfb702739ec\kotlin-compiler-
1.3.50.jar;C:\Users\<user>\.gradle\caches\jars-8\e6f0c38292333779074fe918cc0ffc34\kotlin-script-runtime-1.3.50.jar -d C:\Users\<user>\AppData\Local\Temp\rdgen-16595563179377353196 -jvm-target 1.8 D:\aws-toolkit-j
etbrains\jetbrains-rider\protocol\model\project
warning: unable to find kotlin-stdlib.jar in the Kotlin home directory. Pass either '-no-stdlib' to prevent adding it to the classpath, or the correct '-kotlin-home'
warning: unable to find kotlin-script-runtime.jar in the Kotlin home directory. Pass either '-no-stdlib' to prevent adding it to the classpath, or the correct '-kotlin-home'
warning: unable to find kotlin-reflect.jar in the Kotlin home directory. Pass either '-no-reflect' or '-no-stdlib' to prevent adding it to the classpath, or the correct '-kotlin-home'
exception: java.lang.NoClassDefFoundError: javaslang/?
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:550)
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:458)
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:452)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:451)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:550)
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:458)
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:452)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:451)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:550)
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:458)
at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:452)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:451)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfoImpl.<clinit>(DataFlowInfoImpl.kt:341)
at org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfoFactory.<clinit>(DataFlowInfo.kt:104)
at org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo$Companion.<clinit>(DataFlowInfo.kt:98)
at org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo.<clinit>(DataFlowInfo.kt)
at org.jetbrains.kotlin.resolve.LazyTopDownAnalyzer.analyzeDeclarations$default(LazyTopDownAnalyzer.kt:60)
at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration(TopDownAnalyzerFacadeForJVM.kt:112)
at org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration$default(TopDownAnalyzerFacadeForJVM.kt:82)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.invoke(KotlinToJVMBytecodeCompiler.kt:554)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler$analyze$1.invoke(KotlinToJVMBytecodeCompiler.kt:81)
at org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport.analyzeAndReport(AnalyzerWithCompilerReport.kt:107)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.analyze(KotlinToJVMBytecodeCompiler.kt:545)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules$cli(KotlinToJVMBytecodeCompiler.kt:176)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:163)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:51)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:85)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:43)
at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:104)
at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:82)
at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:50)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at com.jetbrains.rd.generator.nova.RdGen.compile0(RdGen.kt:106)
at com.jetbrains.rd.generator.nova.RdGen.compileDsl(RdGen.kt:146)
at com.jetbrains.rd.generator.nova.RdGen.run(RdGen.kt:284)
at com.jetbrains.rd.generator.gradle.RdgenTask.run(RdgenPlugin.kt:116)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:58)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.run(ExecuteActionsTaskExecuter.java:570)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:395)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:387)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:157)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:242)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:150)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:84)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:555)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:538)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$300(ExecuteActionsTaskExecuter.java:109)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.executeWithPreviousOutputFiles(ExecuteActionsTaskExecuter.java:279)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:268)
at org.gradle.internal.execution.steps.ExecuteStep.lambda$execute$1(ExecuteStep.java:33)
at java.base/java.util.Optional.orElseGet(Optional.java:369)
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:33)
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:26)
at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:67)
at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:36)
at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:49)
at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:34)
at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:43)
at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:73)
at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:54)
at org.gradle.internal.execution.steps.CatchExceptionStep.execute(CatchExceptionStep.java:34)
at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:44)
at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:54)
at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:38)
at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:49)
at org.gradle.internal.execution.steps.CacheStep.executeWithoutCache(CacheStep.java:159)
at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:72)
at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:43)
at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:44)
at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:33)
at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:38)
at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:24)
at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:92)
at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:85)
at java.base/java.util.Optional.map(Optional.java:265)
at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:55)
at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:39)
at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:76)
at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:37)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:36)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:26)
at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:94)
at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:49)
at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:79)
at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:53)
at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:74)
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.lambda$execute$2(SkipEmptyWorkStep.java:78)
at java.base/java.util.Optional.orElseGet(Optional.java:369)
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:78)
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:34)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:39)
at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:40)
at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:28)
at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:33)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:195)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:187)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:114)
at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:62)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:409)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:399)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:157)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:242)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:150)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:94)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:41)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:372)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:359)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:352)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:338)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.ClassNotFoundException: javaslang.?
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 157 more
Compilation finished in 3515 ms
Compilation failed. Return code: 2(INTERNAL_ERROR).
Usage: java -cp [CLASSPATH] com.jetbrains.rd.generator.nova.MainKt [OPTION]...
RD Generator, v1.07. Search for inheritors of 'com.jetbrains.rd.generator.nova.Toplevel' and generate sources according generators: inheritors of 'com.jetbrains.rd.generator.nova.IGenerator'.
Options:
-s, --source=<source> Folders with dsl .kt files. If not present, scan classpath for inheritors of 'com.jetbrains.rd.generator.nova.Toplevel'
-h, --hash-folder=<hash-folder>Folder to store hash file '.rdgen' for incremental generation; default: C:\Users\<user>\.gradle\daemon\6.6
--compiled=<compiled> Folder for compiled dsl. Temporary folder is created if option is not specified.
-c, --compiler-classpath=<compiler-classpath>Classpath for kotlin compiler. You must specify it if you referenced something from your dsl
-f, --force Suppress incremental generation.
-x, --clear Clear output folder before generation (if it is not incremental)
-p, --packages=<packages> Java package names to search toplevels, delimited by ','. Example: com.jetbrains.rd.model.nova; default: com,org
--filter=<filter> Filter generators by searching regular expression inside generator class simple name (case insensitive). Example: kotlin|csharp|cpp
-v, --verbose Verbose output
I tried switching to kotlin-compler-embedded
as a dependency but that did not help.
I also tried a custom Gradle task that uses project.javaexec
and custom configuration
to model the Rdgen dependency to invoke Rdgen as a CLI in order to isolate the classpath from Gradle, but it looks like the generators
block was never modeled as a CLI argument.
When seen that first time just fall in love =) Use lifetimes in maui application, wanted use signals (cause it force to use lifetime to advice), but had to switch back to Rx.NET just because observables can be completed. So I integrated lifetimes to observables and for now it looks so:
_someObservable.Subscribe(lifetime, action);
or
_someObservable.Subscribe(action).DisposeWith(lifetime);
So now its a charm to manage disposable cause before it was a pain (you know)
private IDisposable? _sub;
private void Foo()
{
_sub?.Dispose();
_sub = _someObservable.Subscribe(action)
}
public void Dispose()
{
_sub?.Dispose()
}
And thats only when one disposable =), also SequentialLifetimes useful too.
No issues just wanted to say thanks for ur work!
If you define a model with name already defined in another plugin you get an exception from
serializer.id
has default value based on model nameI had to rename my model
View
extension method without int parameter in delegateCurrent Signal implementation use a thread-unsafe LifetimedList as a backend. There are some exception-protecting mechanisms in LifetimedLists, which significantly reduce the probability of exception during Advise/Fire, but they can't protect in all cases. Since it is allowed to use arbitrary schedulers for RdSignal, reliable thread-safe solution is required here.
Sample test to violate existing implementation:
[Test]
public async Task TestSignalStress()
{
var sig = new Signal<bool>();
using (var run = new LifetimeDefinition())
{
var lt = run.Lifetime;
var sw = Stopwatch.StartNew();
var fireTask = Task.Run(() =>
{
while (sw.ElapsedMilliseconds < 500 && lt.IsAlive)
sig.Fire(true);
}, lt);
Parallel.For(0, 100000, i =>
{
using (var ld = new LifetimeDefinition())
sig.Advise(ld.Lifetime, x => { });
});
await fireTask;
}
}
I have the following model:
object BuildModel: Ext(IdeRoot) {
val buildEventModel = openstruct {
field("id", string)
field("message", string)
}
val startBuildEventModel = structdef extends buildEventModel {
field("buildDescriptor", buildDescriptorModel)
}
val buildDescriptorModel = structdef {
field("id", string)
field("title", string)
field("workingDir", string)
field("startTime", long)
}
init {
signal("buildEvent", buildEventModel).async
}
}
I push a StartBuildEventModel
to the signal from one side and I get a BuildEventModel
on the other side.
Model from Rider for inspiration :)
classdef("TextControlTuple") {
field("id", TextControlId)
field("textControl", LastFocusedTextControl)
}
This issue is a topic starter for a problem of distribution and integration of rd-cpp.
We have had multiple attempts to pack rd-cpp into dll's for easier distribution (and packing into nuget, easy my ass) to be able to use it inside RiderLink project (plugin for Unreal Engine).
We had next number of issues:
If we're accpeting the state that we're not able to distribute rd-cpp in dll's, we need to be able to share it as a source package.
What are the requirements in this case:
Current root global.json file cannot be parsed when .NET 7.0.202 SDK is installed. As a result:
dotnet build rd-net/Rd.sln
error NU1605: Warning As Error: Detected package downgrade:
Microsoft.NETFramework.ReferenceAssemblies.net472 from 1.0.3 to 1.0.2. Reference the package directly from the project
to select a different version.
dotnet --info
output in rd-net directory:
PS C:\repos\rd-master\rd-net> dotnet --info
.NET SDK:
Version: 7.0.202
Commit: 6c74320bc3
Runtime Environment:
OS Name: Windows
OS Version: 10.0.22000
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk\7.0.202\
Host:
Version: 7.0.4
Architecture: x64
Commit: 0a396acafe
.NET SDKs installed:
6.0.406 [C:\Program Files\dotnet\sdk]
7.0.101 [C:\Program Files\dotnet\sdk]
7.0.202 [C:\Program Files\dotnet\sdk]
.NET runtimes installed:
Microsoft.AspNetCore.App 6.0.14 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 7.0.1 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 7.0.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 7.0.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 6.0.14 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 7.0.1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 7.0.3 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 7.0.4 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 6.0.14 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 7.0.1 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 7.0.3 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 7.0.4 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Other architectures found:
x86 [C:\Program Files (x86)\dotnet]
Environment variables:
Not set
global.json file:
Not found
Learn more:
https://aka.ms/dotnet/info
Download .NET:
https://aka.ms/dotnet/download
Proposed solution:
Change the global.json file content as follows:
{
"sdk": {
"version": "6.0.100",
"rollForward": "major"
}
}
With such file the solution is build successfully
Lifetimes\Threading\ByteBufferAsyncProcessor.cs : 194
If we call CurrentClientLifetime
N times and then terminate lifetime of LocalCodeWithMeClientManager
which removes a client we get a N^2 calls of ValueLifetime.ClearValueIfNotAlive
public static Lifetime CurrentClientLifetime(this ICodeWithMeClientManager manager)
{
var clientId = ClientId.Current;
var lifetimeDefinition = Lifetime.Define(Lifetime.Eternal, $"Lifetime of {clientId}");
Log.Assert(manager.Clients.Contains(clientId), $"Client manager doesn't know about {clientId}");
var lifetime = lifetimeDefinition.Lifetime;
manager.Clients.Advise(lifetime, (addRemove, triggeredId) =>
{
if (addRemove == AddRemove.Remove && triggeredId == clientId)
{
lifetimeDefinition.Terminate();
}
});
return lifetime;
}
....
public class LocalCodeWithMeClientManager : ICodeWithMeClientManager
{
public LocalCodeWithMeClientManager(Lifetime lifetime)
{
Clients.Add(ClientId.LocalId);
lifetime.OnTermination(() => Clients.Remove(ClientId.LocalId));
}
public IViewableSet<ClientId> Clients { get; } = new ViewableSet<ClientId>();
}
subj
Собственно, хотелось бы узнать, когда вы опубликуете C# версию ?
It's better to throw user friendly exception when the handler is missing
rd/rd-net/RdFramework/Tasks/RdCall.cs
Line 89 in 53d286d
object FrameworkMarshallers {
inline fun <reified T : Any> create(crossinline reader: (AbstractBuffer) -> T, crossinline writer: (AbstractBuffer, T) -> Unit, predefinedId: Int? = null): UniversalMarshaller<T> {
return UniversalMarshaller(T::class, { _, stream -> reader(stream) }, { _, stream, v -> writer(stream, v) }, predefinedId)
}
Check this:
{ _, stream -> reader(stream) }
This means that for every callsite of FrameworkMarshallers.create there will be separate class created. Our JVM classloading logs for IntelliJ IDA shows clearly:
[1.35760] Class prepared: com/jetbrains/rd/framework/FrameworkMarshallers$special$$inlined$create$39
[1.35764] Loading class: com/jetbrains/rd/framework/FrameworkMarshallers$special$$inlined$create$40 (2724 bytes)
[1.35772] Class prepared: com/jetbrains/rd/framework/FrameworkMarshallers$special$$inlined$create$40
[1.35778] Loading class: com/jetbrains/rd/framework/FrameworkMarshallers$special$$inlined$create$41 (2583 bytes)
[1.35786] Class prepared: com/jetbrains/rd/framework/FrameworkMarshallers$special$$inlined$create$41
[1.35790] Loading class: com/jetbrains/rd/framework/FrameworkMarshallers$special$$inlined$create$42 (2726 bytes)
[1.35797] Class prepared: com/jetbrains/rd/framework/FrameworkMarshallers$special$$inlined$create$42
[1.35803] Loading class: com/jetbrains/rd/framework/FrameworkMarshallers$special$$inlined$create$43 (2585 bytes)
[1.35810] Class prepared: com/jetbrains/rd/framework/FrameworkMarshallers$special$$inlined$create$43
[1.35814] Loading class: com/jetbrains/rd/framework/FrameworkMarshallers$special$$inlined$create$44 (2728 bytes)
[1.35820] Class prepared: com/jetbrains/rd/framework/FrameworkMarshallers$special$$inlined$create$44
[1.35826] Loading class: com/jetbrains/rd/framework/FrameworkMarshallers$special$$inlined$create$45 (2581 bytes)
[1.35832] Class prepared: com/jetbrains/rd/framework/FrameworkMarshallers$special$$inlined$create$45
[1.35836] Loading class: com/jetbrains/rd/framework/FrameworkMarshallers$special$$inlined$create$46 (2724 bytes)
[1.35844] Class prepared: com/jetbrains/rd/framework/FrameworkMarshallers$special$$inlined$create$46
[1.35849] Loading class: com/jetbrains/rd/framework/FrameworkMarshallers$special$$inlined$create$47 (2587 bytes)
[1.35856] Class prepared: com/jetbrains/rd/framework/FrameworkMarshallers$special$$inlined$create$47
[1.35859] Loading class: com/jetbrains/rd/framework/FrameworkMarshallers$special$$inlined$create$48 (2730 bytes)
[1.35866] Class prepared: com/jetbrains/rd/framework/FrameworkMarshallers$special$$inlined$create$48
[1.35900] Loading class: com/jetbrains/rd/framework/FrameworkMarshallers$special$$inlined$create$49 (2667 bytes)
[1.35907] Class prepared: com/jetbrains/rd/framework/FrameworkMarshallers$special$$inlined$create$49
[1.35911] Loading class: com/jetbrains/rd/framework/FrameworkMarshallers$special$$inlined$create$50 (2794 bytes)
[1.35917] Class prepared: com/jetbrains/rd/framework/FrameworkMarshallers$special$$inlined$create$50
It looks like it was removed accidentally.
Also, check to get sources from GitHub in DebugTime.
I want to specify an interface with a method that has a nullable return type.
var IMyInterface = interfacedef("IMyInterface") { method("get", PredefinedType.string.nullable) }But it generates to:
interface IMyInterface { fun get() : StringNullable }I expected
fun get() : String?
Originally posted by @al-darmonski in #206 (comment)
nuget.org says: "The <iconUrl> element is deprecated. Consider using the <icon> element instead"
>> Generating: 2 filtered generators
Invoke CSharp50Generator(defaultFlowTransform=Reversed, defaultNamespace='JetBrains.Rider.Model', folder=/Users/eugene/Developer/resharper-fsharp/ReSharper.FSharp/src/FSharp.ProjectModelBase/src/Protocol) on root `IdeRoot`, clearFolder=false
Invoke Kotlin11Generator(flowTransform=AsIs, defaultNamespace='com.jetbrains.rider.model', folder=/Users/eugene/Developer/resharper-fsharp/rider-fsharp/src/main/java/com/jetbrains/rider/plugins/fsharp/protocol) on root `IdeRoot`, clearFolder=false
Generation finished in 423 ms
Storing hash into 'build/rdgen/.rdgen'
> Task :rdgen FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':rdgen'.
> java.io.FileNotFoundException: build/rdgen/.rdgen (No such file or directory)
A workaround is creating an empty ./build/rdgen/.rdgen
file.
Is there some additional information I can provide?
eugene@Eugenes-MacBook:rider-fsharp$ java --version
java 12.0.2 2019-07-16
Java(TM) SE Runtime Environment (build 12.0.2+10)
Java HotSpot(TM) 64-Bit Server VM (build 12.0.2+10, mixed mode, sharing)
If I have a class with the following member: list("children", immutableList(SomeModel))
and then I add immutable lists to this viewable list, I get such exceptions:
java.lang.IllegalStateException: Value com.jetbrains.rd.platform.codeWithMe.protocol.SecureWireOverStreamTransport$advise$wrapper$1@230e006f already exist for key 972796847982467169
at com.jetbrains.rd.util.CollectionExKt$blockingPutUnique$1.invoke(CollectionEx.kt:37)
at com.jetbrains.rd.util.CollectionExKt$blockingPutUnique$1.invoke(CollectionEx.kt)
at com.jetbrains.rd.util.lifetime.LifetimeDefinition.executeIfAlive(RLifetime.kt:401)
at com.jetbrains.rd.util.CollectionExKt.blockingPutUnique(CollectionEx.kt:35)
at com.jetbrains.rd.framework.MessageBroker.adviseOn(MessageBroker.kt:142)
at com.jetbrains.rd.platform.codeWithMe.protocol.SecureWireOverStreamTransport.advise(SecureWireOverStreamTransport.kt:81)
at com.jetbrains.rd.framework.base.ExtWire.advise(RdExtBase.kt:175)
at com.jetbrains.rd.framework.impl.RdCall.init(RdTask.kt:201)
at com.jetbrains.rd.framework.base.RdBindableBase$bind$4.invoke(RdBindableBase.kt:80)
at com.jetbrains.rd.framework.base.RdBindableBase$bind$4.invoke(RdBindableBase.kt:18)
at com.jetbrains.rd.util.reactive.Signal$Companion.priorityAdviseSection(Signal.kt:14)
at com.jetbrains.rd.framework.base.RdBindableBase.bind(RdBindableBase.kt:79)
at com.jetbrains.rd.framework.base.IRdBindableKt.bindPolymorphic(IRdBindable.kt:55)
at com.jetbrains.rd.framework.base.RdBindableBase.init(RdBindableBase.kt:115)
at com.jetbrains.rd.framework.base.RdBindableBase$bind$4.invoke(RdBindableBase.kt:80)
at com.jetbrains.rd.framework.base.RdBindableBase$bind$4.invoke(RdBindableBase.kt:18)
at com.jetbrains.rd.util.reactive.Signal$Companion.priorityAdviseSection(Signal.kt:14)
at com.jetbrains.rd.framework.base.RdBindableBase.bind(RdBindableBase.kt:79)
at com.jetbrains.rd.framework.base.IRdBindableKt.bindPolymorphic(IRdBindable.kt:59)
at com.jetbrains.rd.framework.impl.RdList$init$2.invoke(RdList.kt:74)
at com.jetbrains.rd.framework.impl.RdList$init$2.invoke(RdList.kt:19)
at com.jetbrains.rd.util.reactive.IViewableList$view$2.invoke(ViewableCollections.kt:227)
at com.jetbrains.rd.util.reactive.IViewableList$view$2.invoke(ViewableCollections.kt:152)
at com.jetbrains.rd.util.reactive.IViewableList$adviseAddRemove$1.invoke(ViewableCollections.kt:187)
at com.jetbrains.rd.util.reactive.IViewableList$adviseAddRemove$1.invoke(ViewableCollections.kt:152)
at com.jetbrains.rd.util.reactive.Signal.fire(Signal.kt:31)
at com.jetbrains.rd.util.reactive.ViewableList.add(ViewableList.kt:25)
at com.jetbrains.rd.framework.impl.RdList.onWireReceived(RdList.kt:96)
at com.jetbrains.rd.platform.codeWithMe.protocol.SecureWireOverStreamTransport$advise$wrapper$1.onWireReceived(SecureWireOverStreamTransport.kt:77)
at com.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:56)
at com.jetbrains.rd.framework.MessageBroker$invoke$2$2.invoke(MessageBroker.kt:11)
at com.jetbrains.rd.framework.impl.ProtocolContexts.readMessageContextAndInvoke(ProtocolContexts.kt:151)
at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:55)
at com.jetbrains.rd.framework.MessageBroker$invoke$2.invoke(MessageBroker.kt:11)
at com.jetbrains.rdclient.protocol.RdDispatcher.flushAll(RdDispatcher.kt:96)
at com.jetbrains.rdclient.protocol.RdDispatcher.access$flushAll(RdDispatcher.kt:17)
at com.jetbrains.rdclient.protocol.RdDispatcher$flushAllRunnable$1.run(RdDispatcher.kt:22)
at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:218)
at com.intellij.openapi.application.TransactionGuardImpl.access$200(TransactionGuardImpl.java:21)
at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:200)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:783)
at com.intellij.openapi.application.impl.ApplicationImpl.lambda$invokeLater$4(ApplicationImpl.java:320)
at com.intellij.codeWithMe.ClientId$Companion.withClientId(ClientId.kt:135)
at com.intellij.codeWithMe.ClientId.withClientId(ClientId.kt)
at com.intellij.openapi.application.impl.FlushQueue.doRun$$$capture(FlushQueue.java:81)
at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java)
at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:133)
at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:46)
at com.intellij.openapi.application.impl.FlushQueue$FlushNow.run(FlushQueue.java:189)
at java.desktop/java.awt.event.InvocationEvent.dispatch$$$capture(InvocationEvent.java:313)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:898)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:775)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:439)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:808)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$9(IdeEventQueue.java:438)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:783)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:486)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
While working with large amount of text data such as logs, I have to use tasks of string frequently. Moreover, these tasks takes substring of large string as parameter. So, I have to create new instance of string on each invokation just for passing to the model. Would be better to use such clases as CharSequence in Kotiln and Memory in C# in terms of perfomance? Anyway, framework doesn't support that types at the moment
Would be really cool to Code Complete shared values from within languages supported by Rd Protocol
While working with large amount of text data such as logs, I have to use tasks of string frequently. Moreover, these tasks takes substring of large string as parameter. So, I have to create new instance of string on each invokation just for passing to the model. Would be better to use such clases as CharSequence in Kotiln and Memory in C# in terms of perfomance? Anyway, framework doesn't support that types at the moment..
Hi guys, sorry for spamming here, but some of my friends send me links to this repository when I show them Fusion: https://github.com/servicetitan/Stl.Fusion - and honestly, I didn't dig deeply into rd, but it looks like at least a part of the goals are similar.
So just FYI, there is a fancy alternative to this framework. It's truly free (MIT license) & you can always reach its author if you'll end up using it. The framework is built mostly with web apps in mind, but nothing nothing prevents to use it anywhere.
Options like getting a live (online) presentation with Q/A are open as well :)
Any document ?
Empty constructor for RdWrapper
is expected using this model
val RdContent = classdef {
property("myProperty", string)
field("myField", string).default("Default")
}
val RdWrapper = classdef {
field("content", RdContent)
}
but RdContent
should be explicitly passed as argument: RdWrapper(RdContent())
.
RdWrapper
should have empty constructor because myProperty
is property and myField
has default value.
In \src\rd_framework_cpp\src\main\wire\SocketWire.cpp
method int32_t SocketWire::Base::read_package() const
returns true
in one case and ignores the status of send_ack(seqn);
.
Need to compare with rd-net and handle accordingly
com.jetbrains.rd.framework.SocketWire.Base#heartBeatInterval
should be var
instead of val
Hi! What are the reasons for using a Object.Equals(a,b)
instead of using EqualityComparer<T>.Default
in ViewableProperty<T>.Value
setter? Using EqualityComparer<T>.Default
is more efficient and flexible
The current problem is with @nls annotations, this, however, can be useful for other cases.
e.g. we need a way to do something similar t this
property("title", string.Nls(Title))
MappedProperty при Advise не соблюдает поведение IReadonlyProperty, а именно не вызывает handler, если значение уже есть.
var test = new ViewableProperty<string>("Hello");
test.Select(x => x + " world!").Advise(Lifetime.Eternal, Debug.Log);
test.Advise(Lifetime.Eternal, Debug.Log);
Результат: выводиться только "Hello"
Ожидается: выводяться как "Hello", так и "Hello world!"
We've tried to use Lifetime's async-features in dotMemory and DPA instead of our own implementation of AsyncLifetime and faced the problem: 500ms of current default timeout isn't enough for DM/DPA activities. While DM is standalone product we can solve this by globally overriding LifetimeDefinition.WaitForExecutingInTerminationTimeoutMs. But for DPA this way looks unacceptable because DPA works side-by-side with Rider/R#. So we need a way to define different termination timeout for nested lifetimes (associated with DPA components, for example).
Test.RdFramework.SocketWireTest.TestDisconnect
test may fail because it expects to receive 1, 2, 3, 4, 5, 6
in RdSignal
on server side, but due to asynchronous acknowledgement some values may be duplicated when connection dropped before server acknowledge received values.
Maybe it is expected behavior for RdSignal
, but not sure that for RdProperty
too. Currently, test fails even with RdProperty
(but not with RdList
, so I added the similar test with RdList
)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.