{"action":"created","issue":{"url":"https://api.github.com/repos/puniverse/quasar/issues/281","repository_url":"https://api.github.com/repos/puniverse/quasar","labels_url":"https://api.github.com/repos/puniverse/quasar/issues/281/labels{/name}","comments_url":"https://api.github.com/repos/puniverse/quasar/issues/281/comments","events_url":"https://api.github.com/repos/puniverse/quasar/issues/281/events","html_url":"https://github.com/puniverse/quasar/pull/281","id":239977238,"number":281,"title":"Kotlin 1.1 support","user":{"login":"circlespainter","id":6113296,"avatar_url":"https://avatars0.githubusercontent.com/u/6113296?v=3","gravatar_id":"","url":"https://api.github.com/users/circlespainter","html_url":"https://github.com/circlespainter","followers_url":"https://api.github.com/users/circlespainter/followers","following_url":"https://api.github.com/users/circlespainter/following{/other_user}","gists_url":"https://api.github.com/users/circlespainter/gists{/gist_id}","starred_url":"https://api.github.com/users/circlespainter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/circlespainter/subscriptions","organizations_url":"https://api.github.com/users/circlespainter/orgs","repos_url":"https://api.github.com/users/circlespainter/repos","events_url":"https://api.github.com/users/circlespainter/events{/privacy}","received_events_url":"https://api.github.com/users/circlespainter/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2017-07-01T23:04:08Z","updated_at":"2017-07-03T21:18:28Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/puniverse/quasar/pulls/281","html_url":"https://github.com/puniverse/quasar/pull/281","diff_url":"https://github.com/puniverse/quasar/pull/281.diff","patch_url":"https://github.com/puniverse/quasar/pull/281.patch"},"body":"Some notes:\r\n\r\n- It includes https://github.com/puniverse/quasar/pull/237 already, with `for`s restored when the identifier is used in the body.\r\n- With Java 7, the Kotlin compiler complains that using a 6 or 7 Java compiler is not supported and will be forbidden in the future.\r\nIn fact when using Java 7 I found several bugs related to overloading; I tried to work around them and almost succeeded but it's futile because even if I reported the issues they wouldn't fix them (being an unsupported configuration).\r\nI didn't drop support for pre-8 but that could be definitely an option and would also forbid the user from using a bugged configuration. Another option would be to build two artifacts, either similarly to `quasar-core` (better but harder) or with a separate `quasar-kotlin-jdk8` artifact (worse but easier, many people doing it anyway incl. the Kotlin guys).\r\nNot sure if better to tackle this now or later, for now there's only a pre-8 `quasar-kotlin` artifact. @pron What do you think?\r\n- Although I'm depending on Kotlin 1.1.3 I'm still using the 1.1.1 plugin because currently 1.1.2+ is broken (at least with our build configuration). I get an IDE warning about that in the build file and there's a probably related warning about an ignored option during build but all seems to work fine anyway. Needs investigation.\r\n- I widened a bit the Kotlin `receive` functions from `Any` to `Any?` because (seemingly a bug but needs investigation) else the Kotlin 1.1 compiler seems to choose the Java base class' `receive` with the `MessageProcessor` (without even complaining about the ambiguity).\r\n- I added a lazy delegate implementation that uses Quasar locks instead of the `synchronized` used (via `Unsafe` it seems) in the stdlib. The other 2 lazy impls. in the stdlib (\"safe for publishing\" and \"unsafe\") instead seem to work OK with fibers.\r\n- Apart from `Lazy` I'm not instrumenting higher-order stdlibs because most often they won't call into suspendables and, when they do, the user can annotate them externally anyway (this is not auto-instrumentation for Kotlin).\r\n- I also added an `@Ignored` test for https://github.com/puniverse/quasar/issues/275 (ignored because it's not fixed yet).\r\n\r\nOn Java 8, tests run fine with verification enabled in all of the following configs:\r\n- Java lang level 1.7 + Quasar jdk7 + Kotlin stdlib for 1.6 + Kotlin compiler targetting 1.6\r\n- Java lang level 1.8 + Quasar jdk8 + Kotlin stdlib for 1.6 + Kotlin compiler targetting 1.8\r\n- Java lang level 1.8 + Quasar jdk8 + Kotlin stdlib for 1.7 + Kotlin compiler targetting 1.8\r\n- Java lang level 1.8 + Quasar jdk8 + Kotlin stdlib for 1.8 + Kotlin compiler targetting 1.8\r\n\r\n(Yes, Kotlin's compiler has now 2 targets: 1.6 and 1.8; the stdlib instead has now 3 versions: 1.6, 1.7 and 1.8)."},"comment":{"url":"https://api.github.com/repos/puniverse/quasar/issues/comments/312735404","html_url":"https://github.com/puniverse/quasar/pull/281#issuecomment-312735404","issue_url":"https://api.github.com/repos/puniverse/quasar/issues/281","id":312735404,"user":{"login":"circlespainter","id":6113296,"avatar_url":"https://avatars0.githubusercontent.com/u/6113296?v=3","gravatar_id":"","url":"https://api.github.com/users/circlespainter","html_url":"https://github.com/circlespainter","followers_url":"https://api.github.com/users/circlespainter/followers","following_url":"https://api.github.com/users/circlespainter/following{/other_user}","gists_url":"https://api.github.com/users/circlespainter/gists{/gist_id}","starred_url":"https://api.github.com/users/circlespainter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/circlespainter/subscriptions","organizations_url":"https://api.github.com/users/circlespainter/orgs","repos_url":"https://api.github.com/users/circlespainter/repos","events_url":"https://api.github.com/users/circlespainter/events{/privacy}","received_events_url":"https://api.github.com/users/circlespainter/received_events","type":"User","site_admin":false},"created_at":"2017-07-03T21:18:28Z","updated_at":"2017-07-03T21:18:28Z","body":"I added conditional (on `java8`) inclusion for `quasar-kotlin` and I also added a `quasar-kotlin-jdk8` project with the same inclusion condition and using the very same sources as `quasar-kotlin`, except that it depends on the `jdk8` Quasar, on the `jdk8` Kotlin stdlib and it compiles both Java and Kotlin sources with a 1.8 target.\r\n\r\nSince the `quasar-kotlin-jdk8`'s deps are different than `quasar-kotlin` I think the former can't be just an additional `quasar-kotlin` artifact and instead it needs to be a separate subproject."}}
{"actor":{"display_login":"circlespainter"}}