NStack.Core 1.0.5

There is a newer version of this package available.
See the version list below for details.
dotnet add package NStack.Core --version 1.0.5                
NuGet\Install-Package NStack.Core -Version 1.0.5                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="NStack.Core" Version="1.0.5" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add NStack.Core --version 1.0.5                
#r "nuget: NStack.Core, 1.0.5"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install NStack.Core as a Cake Addin
#addin nuget:?package=NStack.Core&version=1.0.5

// Install NStack.Core as a Cake Tool
#tool nuget:?package=NStack.Core&version=1.0.5                

NStack

Build Version Downloads License Bugs

NOTE: NStack has moved to the gui-cs org.

Currently, this library contains a port of the Go string, and Go rune support as well as other Unicode helper methods.

You can browse the API documentation.

Install the NuGet package from NuGet.org by installing NStack.Core.

Future Additions

The long term goal is to make this module an exploration of what the .NET APIs for IO looked like if they only used exceptions for either invalid parameters being passed to methods and used results/error codes for most IO operations:

  • Exceptions have a role, but IO code tends to become ugly in its presence.

  • Other areas include making an IO layer that does not surface "string" for filenames, as in Unix there are really no filenames as we treat them in .NET, but rather file names are a collection of bytes, which do not necessarily can be decoded into UTF8 [1].

To make things simple, this assumes that UTF8 strings (ustring in this code) can exist without them being valid UTF8 strings, but rather a collection of bytes.

[1] For example, older file systems can have filenames that made sense with a particular character set and are effectively not possible to map into strings.

Version Numbers

Version info for NStack is managed by gitversion.

Install gitversion:

dotnet tool install --global GitVersion.Tool
dotnet-gitversion

The project version (the nuget package and in NStack.dll) is determined from the latest git tag.

The format of version numbers is vmajor.minor.patch.build.height and follows the Semantic Versioning rules.

To define a new version (e.g. with a higher major, minor, patch, or build value) tag a commit using git tag:

git tag v1.3.4-beta.5 -a -m "Release v1.3.4 Beta 5"
dotnet-gitversion /updateprojectfiles
dotnet build -c Release

DO NOT COMMIT AFTER USING /updateprojectfiles!

Doing so will update the .csproj files in your branch with version info, which we do not want.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on NStack.Core:

Package Downloads
M5x.Tty

Package Description

guit

Library to build plugins for dotnet-guit.

PortedFastBertTokenizer

Fast and memory-efficient WordPiece tokenizer as it is used by BERT and others. Tokenizes text for further processing using NLP/language models. This fork only supports .NET Standard 2.1

GitHub repositories (4)

Showing the top 4 popular GitHub repositories that depend on NStack.Core:

Repository Stars
PowerShell/ConsoleGuiTools
Modules that mix PowerShell and GUIs/CUIs!
reactiveui/ReactiveMvvm
Cross-platform ReactiveUI sample app built for a talk at MSK .NET conf.
x2bool/radish
Desktop client for Redis (Windows, MacOS, Linux)
migueldeicaza/XtermSharp
XTerm emulator as a .NET library
Version Downloads Last updated
1.1.1 83,320 1/22/2024
1.1.0 127 1/22/2024
1.0.7 132,897 12/5/2022
1.0.5 1,910 11/4/2022
1.0.3 70,967 9/19/2022
0.17.1 78,647 5/26/2022
0.16.0 397,271 12/8/2020
0.15.0 3,215 10/30/2020
0.14.0 95,730 3/30/2020
0.13.0 1,979 2/29/2020
0.12.0 5,715 6/4/2018
0.11.0 81,141 4/24/2018
0.10.0 1,090 4/22/2018
0.9.0 1,015 4/22/2018
0.8.0 3,850 2/7/2018
0.7.0 1,206 1/24/2018
0.6.0 1,006 1/23/2018
0.5.0 1,013 1/23/2018
0.4.0 1,121 1/4/2018
0.3.0 1,000 6/3/2017
0.2.0 982 6/3/2017
0.1.0 980 6/2/2017

Version 1.0.3
     * Fixes #83. Ustring ConsoleWidth must return the exactly character size or zero and not Rune.ColumnWidth
     
     Version 1.0.3
     * Fixes #79. Needed to add unit test for equal and not equal operators.

     Version 1.0.1 - Moderinized API doc generation and now using gitflow
     * Fixes #59. Automatically generate API docs via github action
     * Fixes #61. ustring.IsNullOrEmpty doesn't work the same way as the string.IsNullOrEmpty method.

     Previous Versions:
     0.17: Fork by @tig modernize build/deploy and help publishing newer versions. No functional changes.
     0.16: Fixes issue #51 (chess symbols);
     0.15: Fixes to MaxRune;   ColumnWidth differentiates between non-printable and nul characters; Rune has a constructor from two surrogate pairs; contributions by @BDisp;
     0.14: Upgrade the NetStandard dependencies;
     0.13: Fixes ustring.Map() and Lower(); Extends Rune.IsValid to match Go; add Rune.ExpectedSizeFromFirstByte()  plus a bug fix;
     stack
     0.12: Rebuild with an older Roslyn, to prevent regressions on Xamarin.
     0.10: Merged some changes from upstream.

     0.9:
     Added ustring.ColumnWidth to return number of columns that a ustring takes in a console.

     0.8:
     * Renamed some methods to match the equivalent methods in Char.
     * Introduced Substring (int start)
     * Introduced difference between this [int start, int end] and this [int start, object end] the latter used to mean "until the end", replacing '0' as the previous value for "until the end".
     * Introduced new method in Rune to measure the width in columns for console applications.