Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/genotrance/shared
Nim library for shared types
https://github.com/genotrance/shared
locks nim seq shared string threads
Last synced: 7 days ago
JSON representation
Nim library for shared types
- Host: GitHub
- URL: https://github.com/genotrance/shared
- Owner: genotrance
- License: mit
- Created: 2019-07-11T05:36:37.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2019-07-31T18:32:58.000Z (over 5 years ago)
- Last Synced: 2024-10-10T23:29:20.786Z (29 days ago)
- Topics: locks, nim, seq, shared, string, threads
- Language: Nim
- Homepage:
- Size: 76.2 KB
- Stars: 11
- Watchers: 5
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-nim - shared - A Nim library for shared types. (Language Features / Threading)
README
shared is a [Nim](https://nim-lang.org/) library for shared types
Nim has a great string and seq implementation but sharing them across thread boundaries is problematic due to the thread local GC. This package attempts to provide basic shared types that can be used across threads.
The API attempts to be the same but not as extensive as the standard API. E.g. $ and & work as expected, but not every capability is being duplicated. Further, the implementation aims for safety and performance may not be the priority until later on. Every assignment results in realloc and copy to keep things simple.
__Installation__
shared can be installed via [Nimble](https://github.com/nim-lang/nimble):
```
> nimble install shared
```This will download and install shared in the standard Nimble package location, typically ~/.nimble. Once installed, it can be imported into any Nim program.
__Usage__
Detailed documentation [here](https://genotrance.github.io/shared/theindex.html).
```nim
import shared/stringvar
ss1 = newSharedString("abc")echo ss1
ss1 = "def"
echo ss1
``````nim
import shared/seqvar
sq1 = newSharedSeq(@[1, 2, 3])
sq2 = newSharedSeq(@["a", "b", "c"])
sq3: SharedSeq[string]echo sq1
echo sq2
sq2.set(@["d", "e", "f"])
sq3 = sq2
```__Feedback__
shared is a work in progress and any feedback or suggestions are welcome. It is hosted on [GitHub](https://github.com/genotrance/shared) with an MIT license so issues, forks and PRs are most appreciated.