StaticStrings.jl v0.3, move to JuliaStrings

StaticStrings v0.3.0

StaticStrings.jl v0.3 was just released and has joined the JuliaStrings Github organization. Special thanks to @PatrickHaecker for major contributions to this release.

StaticStrings.jl contains several string types which wrap a NTuple{N, UInt8} for strings of fixed length strings similar to InlineStrings.jl. The main difference is that StaticStrings.jl uses an NTuple whereas InlineStrings.jl uses integer types as a backing store.

Here are the release notes for version 0.3:

Release Notes

Diff since v0.2.6

  • Breaking changes for CStaticString
  • Use of unsafe_string and unsafe_write for performance
  • Deprecate StaticStrings.data in favor of Tuple
  • Many contributions by @PatrickHaecker

Merged pull requests:

Closed issues:

  • StaticStrings on GPU, code_warntype on StaticString generation (#20)

Upstream issue for JuliaLang/Julia

In reviewing Patrick’s work, I realized that Julia is missing facilities to populate a Vector{UInt8} or Memory{UInt8} from a NTuple{N,UInt8} efficiently. I created an issue documenting the lack of autovectorization for this route and potential new methods for copyto!.

Future Plans

  • I was originally inspired to create this package to address fixed length strings coming from I/O libraries such as HDF5.jl. I never finished actually integrating this with I/O packages, so I hope to pursue that.
  • I also noticed that an AbstractString that wraps an existing Memory{UInt8} may be useful. I am unsure whether to add this to StaticStrings or if I should start a new package.
  • Your pull requests are welcome.

I think the new StringView type in 1.14 or in StringViews.jl can do this.

Interesting. An alternative implementation of a StaticString could be a StringView of a StaticVector from StaticArrays.jl.