Skip to content

Releases: RuqoomTech/ArbSh

v0.7.5-alpha-public

06 May 04:44

Choose a tag to compare

v0.7.5-alpha-public Pre-release
Pre-release

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-Process with redirected streams. This involved setting appropriate encodings in test_features.ps1 and Program.cs, ensuring correct handling of Arabic commands/parameters and output in test scenarios.
  • Variable Expansion Regression: Fixed the parser logic in Parser.cs to correctly handle variable expansion ($var) within arguments, ensuring adjacent tokens are concatenated properly (e.g., ValueIs:$testVar now works as expected).

Changed

  • Updated README.md and docs/USAGE_EXAMPLES.md to reflect the encoding and variable expansion fixes.
  • Updated ROADMAP.md to 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. Created Parsing/Token.cs for token definitions. Integrated the new tokenizer into Parser.cs.
  • Parser Logic: Updated redirection and argument/parameter parsing logic in Parser.cs to work with the new List<Token> structure.
  • Redirection Parsing: Refined Regex patterns in RegexTokenizer.cs and parsing logic in Parser.cs to correctly identify and parse all standard redirection operators (>, >>, 2>, 2>>, >&1, >&2).
  • Executor Redirection Handling:
    • Implemented handling for stdout file redirection (>, >>) in Executor.cs.
    • Implemented handling for stderr file redirection (2>, 2>>) in Executor.cs.
    • Fixed null path error when no redirection was specified.
  • Error Handling: Added IsError flag to PipelineObject.cs and updated GetHelpCmdlet.cs to use it for "command not found" errors.
  • Test Script: Updated test_features.ps1 to log temporary file contents line-by-line to avoid Add-Content stream errors. Changed default file encoding for test_output.log to UTF-8 with BOM.

v0.7.0-alpha-public

04 May 16:59

Choose a tag to compare

v0.7.0-alpha-public Pre-release
Pre-release

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.cs to allow specifying an Arabic alias for a cmdlet class.
    • Updated CommandDiscovery.cs to read the ArabicNameAttribute and 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., احصل-مساعدة).
  • Arabic Parameter Name Support:
    • Updated ArabicNameAttribute to be applicable to properties (parameters).
    • Modified the parameter binding logic in Executor.cs to check for ArabicNameAttribute on 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., -الاسم).
  • Testing: Added tests to test_features.ps1 for 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 explicit Flush() calls in Executor.cs for robustness.
  • Test Script Encoding: Fixed test_features.ps1 to 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

02 May 02:50

Choose a tag to compare

v0.6.0-alpha-public Pre-release
Pre-release

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) and BlockingCollection for 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. ParameterAttribute was enhanced with ValueFromPipeline and ValueFromPipelineByPropertyName flags, and CmdletBase now includes logic (BindPipelineParameters) to automatically bind pipeline objects to appropriately marked parameters before ProcessRecord is called.
    • Get-Help: Updated to display detailed parameter information, including whether a parameter accepts pipeline input (-Full switch).
    • Write-Output: Updated to declare pipeline input support for its InputObject parameter and correctly process either pipeline data or direct arguments.
    • Get-Command: Now outputs structured CommandInfo objects (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 ParameterBindingException with more details during type conversion errors.

(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 (>, >>).
  • Parameter Binding Foundation: Introduced ParameterAttribute and implemented reflection-based parameter binding in the Executor, supporting named/positional parameters, mandatory checks, boolean switches, and basic type conversion.
  • Command Discovery: Added CommandDiscovery to find cmdlets via reflection based on class naming conventions.
  • Sequential Pipeline Simulation: Implemented basic pipeline flow by passing BlockingCollection objects between cmdlets sequentially.
  • Basic Cmdlets: Added initial functional versions of Get-Command, Get-Help, and Write-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).