Releases: RuqoomTech/ArbSh
v0.7.5-alpha-public
Release Notes - v0.7.5 (2025-05-06)
This release focuses on fixing critical encoding and variable expansion issues, along with significant refactoring of the tokenizer and improvements to redirection handling.
Fixed
- Encoding Issues: Resolved persistent UTF-8 input/output corruption when running via PowerShell
Start-Processwith redirected streams. This involved setting appropriate encodings intest_features.ps1andProgram.cs, ensuring correct handling of Arabic commands/parameters and output in test scenarios. - Variable Expansion Regression: Fixed the parser logic in
Parser.csto correctly handle variable expansion ($var) within arguments, ensuring adjacent tokens are concatenated properly (e.g.,ValueIs:$testVarnow works as expected).
Changed
- Updated
README.mdanddocs/USAGE_EXAMPLES.mdto reflect the encoding and variable expansion fixes. - Updated
ROADMAP.mdto mark the encoding blocker as resolved and the variable expansion fix as complete. - Tokenizer Refactoring: Replaced the internal state-machine tokenizer with a new Regex-based tokenizer (
Parsing/RegexTokenizer.cs) using Unicode properties (\p{L}) for potentially better handling of mixed-script identifiers and complex syntax elements. CreatedParsing/Token.csfor token definitions. Integrated the new tokenizer intoParser.cs. - Parser Logic: Updated redirection and argument/parameter parsing logic in
Parser.csto work with the newList<Token>structure. - Redirection Parsing: Refined Regex patterns in
RegexTokenizer.csand parsing logic inParser.csto correctly identify and parse all standard redirection operators (>,>>,2>,2>>,>&1,>&2). - Executor Redirection Handling:
- Implemented handling for stdout file redirection (
>,>>) inExecutor.cs. - Implemented handling for stderr file redirection (
2>,2>>) inExecutor.cs. - Fixed null path error when no redirection was specified.
- Implemented handling for stdout file redirection (
- Error Handling: Added
IsErrorflag toPipelineObject.csand updatedGetHelpCmdlet.csto use it for "command not found" errors. - Test Script: Updated
test_features.ps1to log temporary file contents line-by-line to avoidAdd-Contentstream errors. Changed default file encoding fortest_output.logto UTF-8 with BOM.
v0.7.0-alpha-public
Release Notes - v0.7.0 (2025-05-03)
This release focuses on adding core Arabic language support for command and parameter names within the C# shell implementation and fixing key parsing and redirection issues.
Added
- Arabic Command Name Support:
- Extended the parser (
Parser.cs) to recognize Arabic letters as valid characters in command/argument tokens. - Added
ArabicNameAttribute.csto allow specifying an Arabic alias for a cmdlet class. - Updated
CommandDiscovery.csto read theArabicNameAttributeand add both English and Arabic names to the command cache. - Cmdlets can now be invoked using either their English name (e.g.,
Get-Help) or their assigned Arabic name (e.g.,احصل-مساعدة).
- Extended the parser (
- Arabic Parameter Name Support:
- Updated
ArabicNameAttributeto be applicable to properties (parameters). - Modified the parameter binding logic in
Executor.csto check forArabicNameAttributeon properties and attempt binding using the Arabic name first, falling back to the English name. - Cmdlet parameters can now be specified using either their English name (e.g.,
-CommandName) or their assigned Arabic name (e.g.,-الاسم).
- Updated
- Testing: Added tests to
test_features.ps1for Arabic command/parameter aliases.
Fixed
- Parser Tokenization: Corrected tokenizer logic (
Parser.cs) to properly handle hyphens within command names (e.g.,Get-Command) and dots within arguments/filenames (e.g.,temp_file.txt), preventing incorrect splitting. - Redirection: Resolved issue where output redirection (
>,>>) failed due to incorrect filename parsing. Files are now created correctly. Added explicitFlush()calls inExecutor.csfor robustness. - Test Script Encoding: Fixed
test_features.ps1to correctly send UTF-8 encoded input to the ArbSh process by writing bytes directly to the standard input stream, enabling proper testing of Arabic characters. Confirmed successful parsing and execution of Arabic aliases.
v0.6.0-alpha-public
ArbSh Release Notes
Version 0.6.0 (2025-05-02)
This release focuses on implementing concurrent pipeline execution and refining the core cmdlet framework and parameter binding mechanisms introduced in v0.5.0.
Changed
- Concurrent Pipeline Execution: The shell's execution engine (
Executor) has been significantly refactored to run pipeline stages concurrently using .NET Tasks (System.Threading.Tasks.Task) andBlockingCollectionfor data transfer between stages. This replaces the previous sequential simulation and allows for potential performance improvements in pipeline operations. Basic error handling for task failures is included. - Cmdlet & Parameter Binding Enhancements:
- Pipeline Input Binding: Cmdlets can now accept input directly from the pipeline.
ParameterAttributewas enhanced withValueFromPipelineandValueFromPipelineByPropertyNameflags, andCmdletBasenow includes logic (BindPipelineParameters) to automatically bind pipeline objects to appropriately marked parameters beforeProcessRecordis called. Get-Help: Updated to display detailed parameter information, including whether a parameter accepts pipeline input (-Fullswitch).Write-Output: Updated to declare pipeline input support for itsInputObjectparameter and correctly process either pipeline data or direct arguments.Get-Command: Now outputs structuredCommandInfoobjects (containing name and type) instead of just command name strings, enabling richer interaction in the pipeline.- Array Parameter Binding: Added basic support for binding multiple remaining positional arguments to a single array parameter (e.g.,
string[]) on a cmdlet. - Binding Error Reporting: Improved error messages for parameter binding failures, specifically throwing
ParameterBindingExceptionwith more details during type conversion errors.
- Pipeline Input Binding: Cmdlets can now accept input directly from the pipeline.
(Note: Known issues remain with parsing complex escape sequences like \\" inside double quotes and \\ at the end of tokens. These are deferred to a future release. See README.md for details.)
Version 0.5.0 (2025-05-02)
This release marked the beginning of the major refactoring from the original C implementation to a new C#/.NET PowerShell-inspired shell.
Added
- Initial C# Project Structure: Created the new .NET solution (
ArbSh.sln) and console application project (ArbSh.Console). - Core Framework Placeholders: Added initial classes for the object pipeline (
PipelineObject,CmdletBase), parsing (Parser,ParsedCommand), and execution (Executor). - Basic REPL: Implemented a functional Read-Eval-Print Loop.
- Basic Parsing: The parser gained the ability to handle basic syntax elements:
- Tokenization respecting double quotes (
"..."). - Statement separation (
;). - Pipeline separation (
|). - General escape character (
\) handling. - Basic variable expansion (
$varName) using a temporary internal dictionary. - Basic output redirection (
>,>>).
- Tokenization respecting double quotes (
- Parameter Binding Foundation: Introduced
ParameterAttributeand implemented reflection-based parameter binding in theExecutor, supporting named/positional parameters, mandatory checks, boolean switches, and basic type conversion. - Command Discovery: Added
CommandDiscoveryto find cmdlets via reflection based on class naming conventions. - Sequential Pipeline Simulation: Implemented basic pipeline flow by passing
BlockingCollectionobjects between cmdlets sequentially. - Basic Cmdlets: Added initial functional versions of
Get-Command,Get-Help, andWrite-Output. - Documentation: Updated core project documentation (
README.md,ROADMAP.md, etc.) to reflect the new C# direction.
Changed
- Project Direction: Shifted focus to the C#/.NET refactoring effort, aiming for a PowerShell-inspired architecture with first-class Arabic support.
- Build System: Transitioned from CMake to the standard .NET CLI (
dotnet build). - Code Organization: Moved the original C codebase to the
old_c_code/directory for reference.
Deprecated
- Original C implementation (now in
old_c_code/). - CMake build system.
Previous C Implementation Versions (Pre-Refactor)
(These notes summarize key features of the original C implementation before the C# refactoring began.)
- [Unreleased C Features]: Included an ImGui-based GUI mode, a unified C entry point, a complete Unicode Bidirectional Algorithm (UAX #9) implementation, and enhanced Arabic keyboard support.
- [1.1.0] (2025-03-02): Focused heavily on adding comprehensive Arabic language support (UTF-8, RTL display, BiDi, shaping, input methods), Baa language integration capabilities, localization, and a custom Windows console.
- [1.0.1] (2025-01-31): Added Windows-specific signal handling, MSVC build improvements, and compatibility refinements.
- [1.0.0] (2025-01-31): Established initial cross-platform support (Windows/Unix), CMake build system, basic built-in commands, history, command chaining, aliases, and basic variable replacement.
- [0.1.0] (2025-01-30): Initial release with basic shell functionality (command execution, environment variables).