System.Terminal
은 System.Console
의 현대적 대안을 제시하는 프로젝트입니다. 흔히 conhost.exe 라고 불리는 Windows Console Host가 이제는 리눅스나 맥OS의 터미널과 마찬가지로 VT100 기반의 이스케이프 시퀀스를 지원하기 때문에, 굳이 낡고 다른 플랫폼과의 호환성도 떨어지는 System.Console
을 쓸 이유가 없다는 것입니다. (맥OS나 리눅스를 주 개발 환경으로 쓰시는 분들은 공감하시겠지만, 닷넷으로 만든 앱들은 유난히 터미널 버퍼를 쉽게 망가뜨립니다.)
저자 Alex Rønne Petersen은 오랫동안 모노 프로젝트에도 기여했고, 자마린과 마이크로소프트에서도 일해왔던 것 같고, 네임스페이스도 System
아래에 둔 것으로 보아, 아직은 오픈 소스 서드파티 프로젝트이지만 추후 .NET에 표준화되는 것을 목표로 하고 있는 듯 보입니다.
9 Likes
Vincent
December 31, 2021, 6:25am
2
오…콘솔에 관심있는 저로서는 흥미있는 깃허브군요. 감사합니다!!
2 Likes
올해 들어 Cathode라는 이름으로 바뀌었네요. 네임스페이스도 System.Terminal
에서 Vezel.Cathode
로 옮겨졌습니다.
opened 12:06AM - 30 Jan 22 UTC
closed 06:40PM - 13 Mar 22 UTC
type: housekeeping
area: build
area: documentation
area: infrastructure
The System.Terminal project was started before [`global using` directives](https… ://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/globalusingdirective) became a thing. Most C# files back then contained a `using` directive for the `System` namespace. The idea was that, by putting the code in the `System` namespace, users would not need to add an extra `using` directive whenever they wanted to use terminal APIs, thus making it less likely that they would reach for .NET's console APIs. This is no longer a major concern since we emit `global using` directives when the user has them enabled in their project.
Additionally, I was not yet aware of [Microsoft.CodeAnalysis.BannedApiAnalyzers](https://www.nuget.org/packages/Microsoft.CodeAnalysis.BannedApiAnalyzers). We now use that to ban the Windows-oriented console APIs that .NET ships with.
Finally, it seems that there is [work planned for a console API redesign in .NET 7](https://github.com/dotnet/runtime/issues/64487). It would be unfortunate if we have name clashes with any potential new types introduced in that effort.
So, at this point, I'm thinking that it would probably make sense to rebrand the project somehow. What the new name might be, I have no idea yet.
3 Likes