fix #16752: threadvar now works with importcpp types; osx now uses native TLS (--tlsEmulation:off), which can be orders of magnitude faster (#16750)

* osx now uses native TLS, which can be orders of magnitude faster

* add {.cppNonPod.}

* improve test

* changelog, docs, disable part of windows test
This commit is contained in:
Timothee Cour 2021-01-27 13:35:43 -08:00 • committed by GitHub
commit e112974920
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 194 additions and 13 deletions

View file

@ -7214,6 +7214,19 @@ will generate this code:
__interrupt void myinterrupt()
`cppNonPod` pragma
------------------
The `.cppNonPod` pragma should be used for non-POD `importcpp` types so that they
work properly (in particular regarding constructor and destructor) for
`.threadvar` variables. This requires `--tlsEmulation:off`.
.. code-block:: nim
type Foo {.cppNonPod, importcpp, header: "funs.h".} = object
x: cint
proc main()=
var a {.threadvar.}: Foo
InjectStmt pragma
-----------------