RPMSpec · 18313 bytes Raw Blame History
1 Name: fortsh
2 Version: 1.5.0
3 Release: 1%{?dist}
4 Summary: Fortran Shell - A modern shell implementation in Fortran with advanced features
5
6 License: GPL-3.0-only
7 URL: https://github.com/FortranGoingOnForty/fortsh
8 Source0: %{name}-%{version}.tar.gz
9
10 BuildRequires: gfortran >= 11.0
11 BuildRequires: gcc
12 BuildRequires: make
13 Requires: glibc
14 Recommends: fzf
15
16 %description
17 Fortsh (Fortran Shell) is a modern Unix shell implementation written in Fortran 2018
18 that demonstrates Fortran's capability for system programming. It provides advanced
19 shell features including comprehensive built-in commands, job control, pattern matching,
20 performance monitoring, and complete scripting support.
21
22 Features:
23 - Advanced I/O & Process Management (pipes, process substitution, coprocesses, brace expansion)
24 - Comprehensive Built-in Command Library (printf, read, getopts, pushd/popd, type/which)
25 - Advanced test operations with [[ ]] syntax and pattern matching
26 - Full scripting support (loops, functions, local variables, interactive input)
27 - Job control enhancements (suspend/resume, background process management)
28 - Enhanced command substitution with nesting and signal handling
29 - Pattern matching and globbing (*,?,[]) with brace expansion
30 - Performance monitoring and memory management with optimization
31 - Compatible with bash/zsh scripts and modern shell workflows
32 - Interactive fzf keybinds (Ctrl+F file browser, Ctrl+R history, Alt+j directory jump, Alt+g git browser)
33
34 %prep
35 %autosetup
36
37 %build
38 make clean
39 make all
40
41 %check
42 # Tests temporarily disabled due to circular module dependencies
43 # make test
44
45 %install
46 mkdir -p %{buildroot}%{_bindir}
47 mkdir -p %{buildroot}%{_mandir}/man1
48 mkdir -p %{buildroot}%{_docdir}/%{name}
49
50 # Install binary
51 install -Dm755 bin/fortsh %{buildroot}%{_bindir}/fortsh
52
53 # Install documentation
54 install -Dm644 README.md %{buildroot}%{_docdir}/%{name}/README.md
55
56 %files
57 %doc README.md
58 %{_bindir}/fortsh
59 %{_docdir}/%{name}/README.md
60
61 %changelog
62 * Sun Mar 09 2026 mfw <espadon@outlook.com> - 1.3.3-1
63 - Redesign Ctrl-R reverse search with fish-style two-line rendering
64 - Fix heap corruption (SIGABRT) when accepting search suggestions
65 - Fix search mode keybinds: Ctrl-U, Ctrl-W, Alt-Backspace now modify search query
66 - Guard all buffer-mutating keybinds during search mode
67 - Enter in search accepts for editing instead of executing (fish behavior)
68 - Fix prompt duplication and stale cursor tracking on search accept
69 - Remove all unused variables across parser, executor, readline, and printf
70 - Fix 7 silent truncation bugs: widen buffers for long paths and variable values
71 - Convert 8 stack-to-static arrays to heap-allocated (allocatable) for safe recursion
72
73 * Sun Mar 09 2026 mfw <espadon@outlook.com> - 1.3.1-1
74 - Update --help flag with missing -l/--login option
75 - Update help builtin with complete builtin command listing
76 - Add fzf keybinds, expansion, and process substitution to help output
77
78 * Sun Mar 09 2026 mfw <espadon@outlook.com> - 1.3.0-1
79 - Fix stack overflows in nested for loops (parser and executor)
80 - Fix field splitting null-byte padding from character length mismatch
81 - Fix substring OOB crashes from non-short-circuit evaluation
82 - Fix environment variable truncation for values over 256 chars
83 - Fix flaky times test in POSIX compliance suite
84 - 100%% POSIX test suite pass rate (3776/3776)
85
86 * Sat Oct 18 2025 mfw <espadon@outlook.com> - 0.8.0-1
87 - Version number reset for more realistic versioning
88 - Major performance: String pooling implementation
89 - Memory profiler and dashboard for optimization
90 - Pooled implementations for lexer, parser, executor
91 - Enhanced readline with extensive refactoring
92 - New memory pool validation and testing suite
93 - POSIX compliance test improvements
94
95 * Sat Oct 18 2025 mfw <espadon@outlook.com> - 6.0.5-1
96 - Additional macOS segfault workarounds
97 - Fixed memory handling issues on macOS
98 - Improved stability on macOS platform
99 - Enhanced error handling and signal management
100
101 * Sat Oct 18 2025 mfw <espadon@outlook.com> - 6.0.4-1
102 - New shell modes for improved ease of use
103 - Multiple mode support for different interaction styles
104 - Enhanced readline with mode-based features
105 - Expanded mode capabilities for user convenience
106
107 * Sat Oct 18 2025 mfw <espadon@outlook.com> - 6.0.3-1
108 - New quick kill feature with reverse-i-search-like interface
109 - Process menu selection for sending signals
110 - Live command line updates with menu selection
111 - Enhanced process management capabilities
112
113 * Sat Oct 18 2025 mfw <espadon@outlook.com> - 6.0.2-1
114 - Restored menu navigation and fish-style features on macOS
115 - Improved readline quality-of-life enhancements
116 - Segfault fixes enable full feature set on macOS
117 - Code cleanup and optimization
118
119 * Fri Oct 17 2025 mfw <espadon@outlook.com> - 6.0.1-1
120 - 100%% passing on all three POSIX benchmark suites
121 - Enhanced builtins compliance testing
122 - Improved executor and control flow
123 - Code cleanup and test suite reorganization
124
125 * Fri Oct 17 2025 mfw <espadon@outlook.com> - 6.0.0-1
126 - MAJOR RELEASE: Full POSIX compliance achieved
127 - Complete POSIX test suite passing
128 - Enhanced parser for POSIX shell syntax
129 - Improved executor and error handling
130 - Major milestone for shell compatibility
131
132 * Fri Oct 17 2025 mfw <espadon@outlook.com> - 5.2.10-1
133 - Fixed shell hang issues for improved responsiveness
134 - Enhanced signal handling and process management
135 - Improved readline and executor reliability
136 - Shell now hang-free under normal operation
137
138 * Fri Oct 17 2025 mfw <espadon@outlook.com> - 5.2.9-1
139 - Fixed allocatable array handling and memory management
140 - Addressed compiler warnings for cleaner builds
141 - Improved code quality and stability
142 - Enhanced expansion and parser robustness
143
144 * Mon Oct 14 2024 mfw <espadon@outlook.com> - 5.2.8-1
145 - Enhanced menu support for cleaner experience
146 - Improved completion menu rendering
147 - Better platform compatibility for menu features
148
149 * Mon Oct 14 2024 mfw <espadon@outlook.com> - 5.2.7-1
150 - Workarounds for gfortran macOS compiler bug
151 - Identified and resolved readline cursor issues
152 - macOS platform stability improvements
153
154 * Mon Oct 14 2024 mfw <espadon@outlook.com> - 5.2.6-1
155 - Verified macOS segfault resolution
156 - Production-ready macOS build
157 - Platform stability confirmed
158
159 * Mon Oct 14 2024 mfw <espadon@outlook.com> - 5.2.5-1
160 - Final macOS segfault resolution
161 - Stability improvements for macOS platform
162 - Verified working macOS build
163
164 * Mon Oct 14 2024 mfw <espadon@outlook.com> - 5.2.4-1
165 - Additional macOS segfault fixes
166 - Continued improvements to macOS stability
167 - Enhanced platform-specific handling
168
169 * Mon Oct 14 2024 mfw <espadon@outlook.com> - 5.2.3-1
170 - Fixed segfaults on macOS builds
171 - Improved platform-specific stability
172 - Enhanced macOS compatibility
173
174 * Mon Oct 14 2024 mfw <espadon@outlook.com> - 5.2.2-1
175 - Added additional test coverage
176 - Parser fixes and improvements
177 - Enhanced stability and correctness
178
179 * Mon Oct 14 2024 mfw <espadon@outlook.com> - 5.2.1-1
180 - Fixed segfault when heredocs are present in command history
181 - Improved history handling and memory safety
182
183 * Mon Oct 14 2024 mfw <espadon@outlook.com> - 5.2.0-1
184 - Major POSIX compliance improvements
185 - Fixed heredoc handling and processing
186 - Custom IFS (Internal Field Separator) handling
187 - Backtick command substitution support
188 - Parameter expansion with walrus assignment operator
189 - Escaped glob characters and escaped spaces handling
190 - Enhanced printf with proper escape sequence handling
191 - Fixed backslash escape issues
192 - Negation operator (!) support
193 - Until loop implementation
194 - POSIX-compliant test command improvements
195 - Added comprehensive POSIX compliance test suite
196
197 * Sun Oct 13 2024 mfw <espadon@outlook.com> - 5.1.0-1
198 - Partial history completions with Ctrl-arrow keys
199 - Fill in history paths one directory at a time
200 - Navigate through historical command paths incrementally
201 - Enhanced command line editing workflow
202
203 * Sun Oct 13 2024 mfw <espadon@outlook.com> - 5.0.0-1
204 - MAJOR RELEASE: Modern Interactive Shell Experience Complete
205 - Unix standard keybindings (Ctrl-A, Ctrl-E, Ctrl-U, Ctrl-K, Ctrl-W, Ctrl-L, etc.)
206 - Enhanced directory navigation with cd - (return to previous directory)
207 - Complete fish-like UX: syntax highlighting, history suggestions, error corrections
208 - Interactive tab completion with arrow key navigation
209 - Programmable completion system
210 - Git-aware prompts and intelligent prompt shortening
211 - Advanced vi mode with forward search
212 - File descriptor redirection for coprocesses
213 - Production-ready interactive shell for daily use
214
215 * Sun Oct 13 2024 mfw <espadon@outlook.com> - 4.4.1-1
216 - Interactive tab completion preview selection (Zsh/Fish-style)
217 - Navigate completion previews with arrow keys or Tab
218 - Visual selection highlighting for active completion candidate
219 - Fixed space trimming on completion insertion
220 - Enhanced completion preview interface
221
222 * Sun Oct 13 2024 mfw <espadon@outlook.com> - 4.4.0-1
223 - MAJOR FEATURE: Fish-like interactive shell enhancements
224 - NEW: Syntax highlighting in command line with color-coded commands, strings, and operators
225 - NEW: Fish-style history suggestions with inline autosuggestions from command history
226 - NEW: Intelligent error suggestions with Levenshtein distance for typo detection
227 - NEW: Command abbreviations system for quick command expansion
228 - NEW: Git-aware prompt with repository status indicators
229 - NEW: Automatic prompt shortening for long directory paths
230 - Improved tab completion with better visual feedback
231 - Enhanced expansion handling and fixes for various edge cases
232 - Better error messages with contextual suggestions
233
234 * Sun Oct 13 2024 mfw <espadon@outlook.com> - 4.3.0-1
235 - NEW FEATURE: File descriptor redirection for coprocess support
236 - Implemented variable FD expansion (>&${var}, <&${var})
237 - Support for array-style FD variables (COPROC[0], COPROC[1])
238 - Fixed nested brace expansion issues
239 - Improved expansion handling and parser migration
240 - Enhanced coprocess communication capabilities
241
242 * Sun Oct 13 2024 mfw <espadon@outlook.com> - 4.2.0-1
243 - Enhanced vi editing mode with advanced features
244 - Added forward search capability in command line editing
245 - Implemented case-insensitive regex support
246 - Improved readline functionality and text manipulation
247 - Enhanced command line editing experience
248
249 * Sun Oct 13 2024 mfw <espadon@outlook.com> - 4.1.0-1
250 - NEW FEATURE: Bash-style programmable completion system
251 - Implemented complete builtin for defining custom completions
252 - Implemented compgen builtin for testing completion generation
253 - Added function-based completion support
254 - Built-in completers for commands, files, directories, and variables
255 - Prefix matching and alphabetical sorting
256 - Prefix/suffix transforms for completion candidates
257 - Filter support for completion results
258
259 * Sun Oct 13 2024 mfw <espadon@outlook.com> - 4.0.2-1
260 - Fixed single-line if statement execution
261 - Fixed infinite while loop issues
262 - Resolved circular module dependency between control_flow and executor
263 - Improved control flow condition evaluation
264 - Enhanced variable expansion in test conditions
265
266 * Sat Oct 12 2024 mfw <espadon@outlook.com> - 4.0.1-1
267 - Fixed multiline function conditionals
268 - Improved scripting support and control flow
269 - Minor fixes and adjustments for better compatibility
270 - Updated README with compliance and parity targets
271
272 * Sat Oct 12 2024 mfw <espadon@outlook.com> - 4.0.0-1
273 - MAJOR RELEASE: Bash parity and POSIX compliance improvements
274 - Implemented process substitution <() and >() operators
275 - Full trap command support for signal handling
276 - Enhanced bash compatibility and POSIX compliance
277 - Major improvements to shell script compatibility
278
279 * Sat Oct 12 2024 mfw <espadon@outlook.com> - 3.3.10-1
280 - Major fixes to background job control
281 - Fixed history expansion handling
282 - Added tracing and trap hooks
283 - Improved signal handling for background jobs
284
285 * Sat Oct 12 2024 mfw <espadon@outlook.com> - 3.3.9-1
286 - Fixed backgrounding jobs edge cases
287 - Implemented $! expansion for last background job PID
288 - Fixed single line for loops
289 - Updated test suite
290
291 * Sat Oct 12 2024 mfw <espadon@outlook.com> - 3.3.8-1
292 - Resolved pipeline+redirect edge case
293 - Further improvements to pipe and redirect handling
294
295 * Sat Oct 12 2024 mfw <espadon@outlook.com> - 3.3.7-1
296 - Enhanced redirect and pipe handling
297 - Fixed edge cases with builtins after pipes
298 - Added I/O helper module for better redirection
299
300 * Sat Oct 12 2024 mfw <espadon@outlook.com> - 3.3.6-1
301 - Fixed redirection operators
302 - Improved I/O redirection handling
303
304 * Sat Oct 12 2024 mfw <espadon@outlook.com> - 3.3.5-1
305 - Fixed macOS raw mode enabling for terminal
306 - Keybinds now work correctly on macOS
307
308 * Sat Oct 12 2024 mfw <espadon@outlook.com> - 3.3.4-1
309 - Further macOS completion and readline fixes
310 - Improved platform-specific compatibility
311
312 * Sat Oct 12 2024 mfw <espadon@outlook.com> - 3.3.3-1
313 - Fixed macOS readline compatibility issues
314 - Added platform-specific build flags for Darwin
315 - Enhanced coprocess functionality
316
317 * Sat Oct 12 2024 mfw <espadon@outlook.com> - 3.3.2-1
318 - Added associative array support
319 - Enhanced parser functionality
320 - Improved expansion capabilities
321
322 * Sat Oct 12 2024 mfw <espadon@outlook.com> - 3.3.1-1
323 - Improved history navigation and reverse-i-search
324 - Fixed ctrl-c signal handling in shell
325 - Enhanced readline functionality
326
327 * Fri Oct 11 2024 mfw <espadon@outlook.com> - 3.3.0-1
328 - Fixed execvp model for path program execution
329 - Programs found by which now execute properly
330 - Improved readline functionality
331 - Updated Makefile with release targets
332
333 * Fri Oct 11 2024 mfw <espadon@outlook.com> - 3.2.0-1
334 - Full builtin compliance implementation
335 - Enhanced directory builtins
336 - Wired in which command
337 - Updated documentation
338
339 * Fri Oct 11 2024 mfw <espadon@outlook.com> - 3.1.0-1
340 - Implemented proper signal handling for external commands
341 - Shell now ignores signals to run commands in succession
342 - Significantly improved shell functionality and stability
343
344 * Fri Oct 11 2024 mfw <espadon@outlook.com> - 3.0.2-1
345 - Fixed parser handling of spaces
346 - Improved prompt parsing
347 - Various parser improvements
348
349 * Fri Oct 11 2024 mfw <espadon@outlook.com> - 3.0.1-1
350 - Enhanced prompt formatting and expansion
351 - Improved variable handling
352 - Better job control
353 - Completed brace expansion implementation
354
355 * Fri Oct 11 2024 mfw <espadon@outlook.com> - 3.0.0-1
356 - Complete rewrite with AST-based parsing architecture
357 - Modern compiler design with lexer, parser, and AST evaluator
358 - Improved POSIX compliance and shell compatibility
359 - Enhanced error handling and diagnostics
360 - Significant performance improvements
361 - Better memory management and resource handling
362
363 * Wed Aug 28 2024 mfw <espadon@outlook.com> - 2.0.0-1
364 - Full POSIX Compliance implementation
365 - Complete parameter expansion: ${var:-word}, ${var%pattern}, ${var#pattern}
366 - Positional parameters: $1, $2, $#, $*, $@ with proper handling
367 - Field splitting with $IFS support for word boundary control
368 - File descriptor redirection: n>file, n<file, <&n, >&n syntax
369 - Quote removal and tilde expansion for proper path handling
370 - All POSIX required built-ins: type, unset, readonly, shift, exec, eval
371 - Enterprise-grade POSIX.1-2017 compliance achieved
372
373 * Wed Aug 28 2024 mfw <espadon@outlook.com> - 1.5.0-1
374 - Phase 9 implementation: POSIX Compliance & Shell Standards
375 - Shell options framework: set -e, set -u, set -o pipefail, shopt commands
376 - Proper pipeline exit status handling with POSIX compliance
377 - Special variables: $$, $!, $?, $0, $PPID with automatic expansion
378 - Errexit integration for command failure handling
379 - Enhanced bash/zsh compatibility (~90% achieved)
380 - POSIX-compliant shell behavior for enterprise use
381
382 * Wed Aug 28 2024 mfw <espadon@outlook.com> - 1.4.0-1
383 - Phase 8 implementation: Advanced Shell Features
384 - Case statements: case/esac with pattern matching and wildcard support
385 - Here documents/strings: << <<- <<< operators with variable expansion
386 - History expansion: !!, !n, !-n, !string patterns with command search
387 - Enhanced aliases: parameter support with $1, $2, $*, $@, $#, ${n}
388 - Command line editing: Emacs and Vi modes with proper mode switching
389 - Associative arrays: key-value storage with declare, set, get operations
390 - Advanced shell features for improved bash/zsh compatibility
391
392 * Wed Aug 28 2024 mfw <espadon@outlook.com> - 1.3.0-1
393 - Phase 7 implementation: Built-in Command Library
394 - Advanced test operations: [[ ]] syntax with pattern matching, regex support
395 - Printf built-in: comprehensive formatting with %s, %d, %f, %x specifiers
396 - Interactive read built-in: -p prompt, -t timeout, -s silent, -a array modes
397 - Getopts command: full option parsing with OPTIND, OPTARG support
398 - Directory operations: pushd/popd/dirs with stack management
399 - Command identification: type/which/command for locating executables
400 - Enhanced built-in command library with 25+ commands
401
402 * Wed Aug 28 2024 mfw <espadon@outlook.com> - 1.2.0-1
403 - Phase 6 implementation: Advanced I/O & Process Management
404 - Enhanced command substitution with nested $(command $(inner)) support
405 - Process substitution: <(command) and >(command) functionality
406 - Brace expansion: {a,b,c}, {1..10}, {a..z} patterns
407 - Coprocess support: coproc command bidirectional communication
408 - Advanced signal handling: timeout, enhanced traps, process groups
409 - Built-in timeout command with automatic process termination
410
411 * Wed Aug 28 2024 mfw <espadon@outlook.com> - 1.1.0-1
412 - Phase 5 implementation: Core Language Extensions
413 - Array variables support: arr=(a b c), ${arr[0]}, ${arr[@]}
414 - Parameter expansion: ${var:offset:length}, ${var:-default}, ${#var}
415 - Arithmetic expansion: $((expression)) with basic math operations
416 - Enhanced variable assignment and expansion system
417
418 * Sun Aug 25 2024 mfw <espadon@outlook.com> - 1.0.1-1
419 - Enhanced shell functionality with functions and command substitution
420 - Improved variable expansion with parameter substitution
421 - Enhanced readline with history and tab completion
422 - Source file execution support
423 - Advanced scripting capabilities
424
425 * Sun Aug 25 2024 mfw <espadon@outlook.com> - 1.0.0-1
426 - Initial RPM release
427 - Complete Fortran shell implementation
428 - Advanced I/O redirection and job control
429 - Performance monitoring and memory management
430 - Pattern matching and globbing support
431 - Full scripting capabilities with control flow
432 - Comprehensive test suite and error handling