FAQ: Question headings (#1776)
This commit is contained in:
committed by
Nikolay Igotti
parent
ccaf0f3ad2
commit
009deaa2e6
@@ -1,18 +1,18 @@
|
||||
Q: How do I run my program?
|
||||
### Q: How do I run my program?
|
||||
|
||||
A: Define top level function `fun main(args: Array<String>)`, please ensure it's not
|
||||
in a package. Also compiler switch `-entry` could be use to make any function taking
|
||||
`Array<String>` and returning `Unit` be an entry point.
|
||||
|
||||
|
||||
Q: What is Kotlin/Native memory management model?
|
||||
### Q: What is Kotlin/Native memory management model?
|
||||
|
||||
A: Kotlin/Native provides automated memory management scheme, similar to what Java or Swift provides.
|
||||
Current implementation includes automated reference counter with cycle collector to collect cyclical
|
||||
garbage.
|
||||
|
||||
|
||||
Q: How do I create shared library?
|
||||
### Q: How do I create shared library?
|
||||
|
||||
A: Use `-produce dynamic` compiler switch, or `konanArtifacts { dynamic('foo') {} }` in Gradle.
|
||||
It will produce platform-specific shared object (.so on Linux, .dylib on macOS and .dll on Windows targets) and
|
||||
@@ -21,21 +21,21 @@ See `samples/python_extension` as an example of using such shared object to prov
|
||||
Kotlin/Native.
|
||||
|
||||
|
||||
Q: How do I create static library or an object file?
|
||||
### Q: How do I create static library or an object file?
|
||||
|
||||
A: Use `-produce static` compiler switch, or `konanArtifacts { static('foo') {} }` in Gradle.
|
||||
It will produce platform-specific static object (.a library format) and C language header, allowing to
|
||||
use all public APIs available in your Kotlin/Native program from C/C++ code.
|
||||
|
||||
|
||||
Q: How do I run Kotlin/Native behind corporate proxy?
|
||||
### Q: How do I run Kotlin/Native behind corporate proxy?
|
||||
|
||||
A: As Kotlin/Native need to download platform specific toolchain, you need to specify
|
||||
`-Dhttp.proxyHost=xxx -Dhttp.proxyPort=xxx` as compiler's or `gradlew` arguments,
|
||||
or set it via `JAVA_OPTS` environment variable.
|
||||
|
||||
|
||||
Q: How do I specify custom Objective-C prefix/name for my Kotlin framework?
|
||||
### Q: How do I specify custom Objective-C prefix/name for my Kotlin framework?
|
||||
|
||||
A: Use `-module_name` compiler option or matching Gradle DSL statement, i.e.
|
||||
```
|
||||
@@ -45,21 +45,21 @@ framework("MyCustomFramework") {
|
||||
```
|
||||
|
||||
|
||||
Q: Why do I see `InvalidMutabilityException`?
|
||||
### Q: Why do I see `InvalidMutabilityException`?
|
||||
|
||||
A: It likely happens, because you are trying to mutate a frozen object. Object could transfer to the
|
||||
frozen state either explicitly, as objects reachable from objects on which `konan.worker.freeze` is called,
|
||||
or implicitly (i.e. reachable from `enum` or global singleton object - see next question).
|
||||
|
||||
|
||||
Q: How do I make a singleton object mutable?
|
||||
### Q: How do I make a singleton object mutable?
|
||||
|
||||
A: Currently, singleton objects are immutable (i.e. frozen after creation), and it's generally considered
|
||||
a good practise to have global state immutable. If for some reasons you need mutable state inside such an
|
||||
object, use `@konan.ThreadLocal` annotation on the object. Also `konan.worker.AtomicReference` class could be
|
||||
used to store different pointers to frozen objects in a frozen object and atomically update those.
|
||||
|
||||
Q: How can I compile my project against Kotlin/Native master?
|
||||
### Q: How can I compile my project against Kotlin/Native master?
|
||||
|
||||
A: We release dev builds frequently, usually at least once a week. You can check the [list of available versions](https://bintray.com/jetbrains/kotlin-native-dependencies/kotlin-native-gradle-plugin). But in the case we recently fixed an issue and you want to check before a release is done, you can do:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user