-
Notifications
You must be signed in to change notification settings - Fork 36
/
Copy pathNEWS
1283 lines (1146 loc) · 58.8 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# History of Yash
## Yash 2.59 (Unreleased)
- Improved POSIX.1-2024 support:
- The `trap` built-in now supports the `-p` option in the POSIXly-
correct mode. When the `-p` option is used, the built-in prints
all traps without filtering out traps that are not set.
- The `trap` built-in now also reports signals that are ignored
because the program that invoked the shell has set the signal
to be ignored.
- The `wait` built-in no longer returns when the target process is
suspended if job-control is on. The built-in now waits for the
target process to exit or be terminated by a signal regardless
of mode.
- [line-editing] Updated the completion scripts to support Git
2.48.1.
- [line-editing] Added the completion script for `git-mv`.
- Fixed a possible crash when the `read` built-in reads input in an
interactive shell.
- Added a workaround for an apparent bug in glibc's fsetpos function
that prevents the shell from updating the history file.
## Yash 2.58.1 (2025-02-04)
- Updated the sample initialization script (yashrc):
- Version 2.58 changed the default `$HISTFILE` location to
`${XDG_STATE_HOME}/yash/history`, but the initialization script
was not making the containing directory. This was causing the
shell to fail to save the history file. The initialization script
now creates the directory if it does not exist.
- [line-editing] Version 2.58 added completion for fzy, but the NEWS
file did not mention it. This has been fixed.
- Fixed a test case in `tests/job-y.tst` that was failing when run as
root.
## Yash 2.58 (2025-02-02)
- The location of the initialization files can now be configured
using the `XDG_CONFIG_HOME` variable (except in POSIXly-correct
mode).
- [line-editing] Command line prediction now works in the vi command
mode.
- [line-editing] Added completion for fzy and git-restore.
- [line-editing] Added completion for git-merge's --continue option.
- [line-editing] The completion for the `.` built-in now suggests
directory names for the first operand even before the user enters a
slash.
- Improved POSIX.1-2024 support:
- Case command items now can be terminated by `;&` instead of `;;'
to force the shell to execute the next item.
- The non-standard terminators `;|` and `;;&` are also supported
to resume pattern matching with the next item unless in the
POSIXly-correct mode.
- Dollar-single-quotes are now supported.
- Declaration utility semantics is now supported. Assignment-like
arguments to the `export`, `local`, `readonly`, and `typeset`
built-ins are now expanded in the same way as assignments are
expanded.
- The `printf` built-in now supports position specifiers in format
strings as in `printf '%2$s %1$s\n' foo bar`.
- The `cd` and `pushd` built-ins now support the `-e` option, which
can be used to see if the `$PWD` variable is successfully updated.
- The exit status of the `getopts` built-in is now 2 on any error.
- After the `bg` built-in resumed a job, the `!` special parameter
expands to the process ID of the job.
- An interactive shell no longer exits on an error in the `exec`
built-in, even if the POSIXly-correct mode is on.
- The shell's syntax now always allows `esac` as the first pattern
of a case branch as in `case esac in (esac|case) echo ok; esac`.
Previously, it was a syntax error in the POSIXly-correct mode.
- The exit statuses returned from the `cd`, `pushd`, and `popd`
built-ins have been updated to make it easier to distinguish the
reasons for failure.
- Fixed a potential crash caused by an expansion error in nested
parameter expansion.
- Updated the sample initialization script (yashrc):
- The default `$HISTFILE` is now set to
`${XDG_STATE_HOME}/yash/history` unless `${HOME}/.yash_history`
exists, in which case the latter is used and a warning is
printed. To suppress the warning and keep using the previous
location, you can set the `$HISTFILE` variable before the sample
initialization script is sourced.
- Added aliases h='fc -l' and j='jobs'.
- Added the wrapper function for `doas` in an attempt to remove the
misleading terminal title.
## Yash 2.57 (2024-08-04)
- Added support for the "$POST_PROMPT_COMMAND" variable, whose value
is executed after reading a command line in the interactive shell.
- If the shell exits because of a shell error during the EXIT trap,
the shell now returns the exit status of the error rather than that
of the last command before the EXIT trap.
- [line-editing] Fixed the spurious error message printed when
completing after `git config alias.` with the nounset shell option
enabled.
- [line-editing] Completion no longer inserts a redundant backslash
to escape a character included in the completed word
when the cursor follows another backslash.
- Updated the sample initialization script (yashrc):
- Added setup for VS Code shell integration.
## Yash 2.56.1 (2024-03-20)
- The shell can now open more file descriptors on Cygwin.
- Fixed the bug where the "typeset -fp" built-in prints parameter
expansions of the form `${foo:/bar/baz}` with a redundant `#` flag
like `${foo:/#bar/baz}`.
- Fixed the bug where the `emacs-capitalize-word` line-editing
command misbehaves and possibly crashes the shell if there is no
word following the cursor to be capitalized.
- Added the `emacs-search-forward-current` and
`emacs-search-backward-current` line-editing commands.
- [line-editing] Added the completion script for `doas`.
======================================================================
Legend:
+: new feature
-: removed feature
=: specification change
*: bug fix
x: new bug
----------------------------------------------------------------------
Yash 2.55 (2023-08-20)
+ [line-editing] The Enter/Send key ("\et") now has a default
binding to the command the Ctrl-M key ("\^M") is bound to in each
mode.
= [line-editing] The redraw-all and clear-and-redraw-all commands
now can be used with an argument to swap their behavior.
* Fixed mistranslation in the Japanese language support.
. Updated the sample initialization script (yashrc):
+ Code example for binding Ctrl-L to clear-and-redraw-all.
. Updated completion scripts:
+ Completion for git-switch and pass
----------------------------------------------------------------------
Yash 2.54 (2023-02-25)
+ Changing font style of command line predictions with $PS1P, etc.
+ The '--le-trim-right' option.
= When the POSIXly-correct mode is active, the shell now refuses to
execute built-ins POSIX XCU 2.9.1 lists as utilities that cause
unspecified results. To implement the new behavior, the previous
"semi-special" built-ins are now categorized in either of the new
categories "mandatory" and "elective". The "command" and "type"
built-ins now report the new categories of such built-ins.
= The shell now requires a corresponding external executable to
exist in $PATH when running a built-in that works like a standard
external utility even when the POSIXly-correct mode is inactive.
Such built-ins are now categorized as "substitutive" built-ins.
= The "array" built-in is now completely ignored in the POSIXly-
correct mode. The built-in, formerly a regular built-in, is now
categorized as an "extension" built-in.
= The xtrace option is now ignored while expanding the $PS4
variable to prevent possible infinite recursion.
* The allexport option was wrongly ignored in many assignment
contexts.
* The errexit and errreturn options now work for assignment error
in a for loop.
* The ">" redirection with the noclobber option no longer hangs
when the operand names a symbolic link to a non-existing file.
* The exported value of the $DIRSTACK variable was not being
updated correctly in the "pushd" and "popd" built-ins.
* The effect of "!" no longer applies to the exit status of the
"break", "continue", and "return" built-ins.
* An alias value ending with a blank followed by a line
continuation no longer subjects the next token to alias
substitution.
. Updated the sample initialization script (yashrc):
+ The "o" alias for WSL
----------------------------------------------------------------------
Yash 2.53 (2022-08-23)
= The shell now deterministically rejects arithmetic expansions
that result in undefined behavior.
* A non-interactive yash now exits on an assignment error in a for
loop.
* Fixed a bug where command substitutions contained in the regular
expression inside the "[[ word =~ regex ]]" syntax were not
parsed correctly.
* Fixed a bug where unclosed quotes in an end-of-here-document
indicator were causing the shell to crash or misbehave.
* Fixed a bug where yash crashes when invoked with no argv.
----------------------------------------------------------------------
Yash 2.52 (2021-10-11)
= Unquoted multiple empty fields resulting from a single word
expansion are now removed. For example, the brace expansion {,}
now expands to no fields rather than two empty fields.
* In word expansion, if a field consists of a single non-whitespace
IFS character, it results in an empty field rather than no field.
* "typeset -fp" now correctly distinguishes "<<-FOO" and "<< -FOO".
* Fixed possible memory leak caused by improper use of the realloc
function.
. Updated completion scripts:
* git: Fixed completion of arguments in a command line containing
argument-taking options such as "-C".
----------------------------------------------------------------------
Yash 2.51 (2020-12-12)
= When an expansion error occurs, the shell now immediately stops
expansion rather than trying to expand the remaining part of the
word.
= When there are no positional parameters, "$@""$@" now expands to
nothing rather than one empty field, as defined in POSIX.
= Quote removal in arithmetic expansion has been modified to match
the behavior defined in POSIX. It no longer allows things like
$(("2" + \5)).
= The quotation rules for the substitution word in a parameter
expansion inside double-quotes have been changed to match with
the behavior of other existing shells. For example, "${x-\a'b'}"
now expands to \a'b' rather than ab.
= When there is no command word in a simple command, redirections
are now performed in a subshell after assignments are performed.
= The standard input of asynchronous commands in a non-job-control
shell is now always implicitly redirected to /dev/null,
regardless of whether the standard input has already been
redirected.
= Quoted characters are now handled in (almost) the same way as
Bash in the regular expression in the "[[ word =~ regex ]]"
syntax.
* The "command" built-in with the -v or -V option was printing
the pathnames of external commands with a redundant leading slash
when the current working directory is "/" or "//".
* Redirections on a subshell command are now evaluated in the
current shell rather than in the subshell.
* When an EXIT trap is executed in a subshell with a redirection,
the redirection was incorrectly not being applied to the trap.
* When job control is off, the "trap" built-in was failing to set
a new trap for SIGINT and SIGQUIT in an asynchronous command.
* When job control is off, SIGINT and SIGQUIT were not being
ignored if a trap had been set for the signal the main shell
process.
* In pattern matching, when an unescaped backslash results from an
expansion in the pattern, it is now treated as an escape
character.
* When there are no positional parameters, the nested expansion
"${{@}}" now expands to nothing rather than one empty field.
* Unquoted parentheses and vertical bars now can be used in the
regular expression in the "[[ word =~ regex ]]" syntax.
----------------------------------------------------------------------
Yash 2.50 (2020-05-31)
* With the "-o notify" option enabled, the "fg" built-in was
redundantly reporting the status of the job that had been resumed
and exited.
* Line-editing no longer hangs when the terminfo database maps a
key to an empty string.
* When $LINENO is exported, external commands now receive the
correct value of the variable.
. Updated the sample initialization script (yashrc):
+ A wrapper function for the "crontab" command is now installed
to prevent accidental removal by "crontab -r" where the user
intends "crontab -e".
. Updated completion scripts:
+ git-rebase: support new options in Git 2.24.0.
----------------------------------------------------------------------
Yash 2.49 (2019-09-22)
+ '--for-local' option.
= The '--no-unset' option now rejects unset variables not only in
parameter expansion but also in arithmetic expansion.
* Expansion of ""$*, ""$@, $*"", and $@"" now correctly yields an
empty string rather than nothing when there are no positional
parameters.
* The $RANDOM variable was expanding to a value larger than 32767
on some systems.
* The "\e" escape sequence was not working in the "echo" built-in.
* When a last command is a subshell, the parent shell's jobs were
not being cleared when entering the subshell.
* The job status was not being updated correctly if a process ID
was reused by another process before the previous process was
removed from the job list.
* The "typeset" built-in now prints functions that contain a simple
command whose command name is a keyword in a format that can
successfully re-parsed by the shell.
. Updated completion scripts:
* Remote branch names are now correctly completed for the
argument to Git remote/fetch/pull/push commands.
* Local pathname operands are now correctly completed for the
rsync command.
----------------------------------------------------------------------
Yash 2.48 (2018-12-22)
+ The double-bracket command (the [[ ... ]] syntax)
+ The "local" built-in
+ The '--le-predict-empty' option
+ The prompt string now can be defined with the $YASH_PS...
variables.
= Command line prediction no longer shows suggestion before you
start typing a command. Use the new '--le-predict-empty' option
to restore the previous behavior.
= The default value of $PS1 has been changed.
* The line number is now correctly counted in arithmetic
expansions that contain newlines.
* Subshells in the EXIT trap were unexpectedly exiting with the
exit status of the last command executed before the EXIT trap on
the main shell.
* A new EXIT trap that was set in a subshell in the EXIT trap was
unexpectedly being ignored.
* The "typeset" built-in was crashing when printing a function that
contains a here-document that contains a command substitution
that contains more than one command.
* The "typeset" built-in was forgetting to print here-document
contents when printing a function that contains a process
substitution (or redirection) that contains here-documents.
* The variable name token in the for command and the word following
a here-document redirection operator are now correctly parsed
even when it resulted from an alias substitution whose value
begins with a blank.
* The "do" keyword in a for loop is no longer subject to alias
substitution.
* An invalid semicolon that appears at the beginning of a line as a
result of alias substitution in a for loop is now correctly
rejected.
. For more strict POSIXly-correctness, some syntactic constructions
are now regarded as an error in the POSIXly-correct mode:
* An IO_NUMBER token cannot be the operand of a redirection.
* Keywords immediately following a redirection are not
recognized.
. Updated the sample initialization script (yashrc):
= The prompt strings are now defined with the $YASH_PS...
variables.
* Window title update should now work on more terminals.
* Any predefined handlers for SIGTSTP, SIGTTIN, and SIGTTOU are
now cancelled so that jobs can be suspended properly.
. Updated completion scripts:
* git: pathnames are now correctly completed with the latest Git.
+ git-grep: support new options in Git 2.19.1.
+ git-stash: support new options in Git 2.18.0.
+ ping: support some common options
= ssh, ssh-keygen: support new options in OpenSSH 7.7.
----------------------------------------------------------------------
Yash 2.47 (2018-04-11)
+ '--errreturn' option.
= Expansion results printed by the -x option is now quoted to
disambiguate presence of special characters.
= When the shell prints aliases, variables, key bindings, etc. they
are now printed with less quotes.
* The "set" built-in without any argument now prints not only local
variables but also global.
* The "." built-in no longer leaves temporary positional parameters
after a file-not-found error.
* The ">" redirection with the noclobber option is now more
reliable than before. Previously, there was little possibility of
overwriting an existing regular file in case another process
simultaneously replaces the file.
. Updated the sample initialization script (yashrc):
+ Example code for enabling "direnv".
----------------------------------------------------------------------
Yash 2.46 (2017-10-28)
= Global aliases are now substituted in all locations, including
part of compound commands where only operators are syntactically
acceptable.
* The shell now reads and executes all shell commands line by line.
Previously, commands that are not from a file or the standard
input were parsed all at once before being executed.
* After alias substitution where the alias value ends with a blank,
the next word is also subject to alias substitution, but
previously this substitution was being applied only once, which
was a different behavior from many other shells.
* After alias substitution where the alias value ends with a blank,
global aliases were being applied twice, which is now just once.
* Line continuations no longer prevent recursive alias
substitution.
----------------------------------------------------------------------
Yash 2.45 (2017-07-05)
+ [line-editing] new line-editing commands:
complete-max-then-list, complete-max-then-next-candidate,
complete-max-then-prev-candidate
= In prompt strings $PS1 and $PS2, the job count printed by the \j
notation included finished jobs that have not yet waited for.
That was confusing, so the job count no longer includes finished
jobs that have once had its "Done" status reported to the user.
= The "jobs" built-in, with the -n option, no longer clears
finished jobs that are not being reported.
* In arithmetic expansion, unset variables now successfully expand
to a value of "0".
* With the "-o notify" option, job status change was not being
printed until the shell receives a SIGCHLD.
. Updated the default initialization script (yashrc):
+ Confirm before clearing the whole history by "history -c'.
. Updated completion scripts:
+ carthage: --cache-builds option
* git: at most 10 candidates are now proposed for a commit hash.
----------------------------------------------------------------------
Yash 2.44 (2017-01-17)
+ Command line prediction and the '--le-predict' option.
+ A default initialization script is automatically loaded if the
~/.yashrc file cannot be loaded.
= During shell startup, $YASH_LOADPATH is now initialized only if
not set in the environment.
* Updated completion script for: carthage, git, git-log,
git-revert, git-submodule, ssh
* The "return" built-in was wrongly refusing to return from a
script sourced by the "." built-in in an interactive shell.
* In the "test" built-in, the unary "-o" operator was returning the
wrong answer if the given option name was negated with the "no"
prefix (e.g. "test -o noclobber").
* The "wait" built-in now returns an exit status of 1 if any
operand is invalid, ignoring results for any other operands.
* In a for loop without the "in" keyword, a semicolon that delimits
the variable name, if any, now must appear on the same line as
the variable name.
= Support for POSIX.1-2008 Technical Corrigendum 2 (2016).
This affects the shell's behavior only in the POSIXly-correct
mode unless marked with (*) in the following:
. In a pipeline, the reserved word "!" must now be delimited by
a white space when followed by a parenthesis "(".
. In a for loop without the "in" keyword, the variable name and
the "do" keyword can now be separated by a semicolon.
. Variables that are assigned in a simple command whose command
is a function no longer persist after the function finishes.
. The standard input of an asynchronous command is now implicitly
redirected to /dev/null when job control is off. Previously,
this was done when the shell was interactive in the POSIXly-
correct mode.
. The SIGINT and SIGQUIT signals on an asynchronous command are
now ignored only when job control is off.
. The "bindkey", "complete", "dirs", "disown", "hash", "help",
"history", "popd", "pushd", "suspend", "type", "typeset", and
"ulimit" built-ins are now semi-special built-ins.
. The "break" and "continue" built-ins now interrupt lexically
enclosing loops only. (*)
. Unquoted $* and $@ now expand to separate positional
parameters, even if $IFS is an empty string. (*)
. On an assignment error, a non-interactive shell now always
exits, regardless of command type. (*)
. When any error occurs in a special built-in in non-interactive
shell, the shell now exits, regardless of error type.
----------------------------------------------------------------------
Yash 2.43 (2016-09-22)
* Updated completion script for: carthage, cd, su
----------------------------------------------------------------------
Yash 2.42 (2016-08-27)
+ '--pipefail' option.
+ New completion script for: carthage, dnf, git-rev-parse, tree,
watch
+ Updated completion script for: cd, git, git-bisect, git-rev-list
(Git 2.9.2).
= Yash now supports the 2013 edition of POSIX.1-2008.
= Unclosed here-documents are now always rejected.
= A job-control shell now ignores SIGTTIN and SIGTTOU by default.
= Line-editing can now be interrupted by SIGINT.
= The "-o errexit" option is now applied to redirection errors on
compound commands and expansion errors in the for and case
commands.
* In backquoted command substitutions that occur in double quotes,
backslashes that escape a double quote are now handled before the
containing command is parsed.
----------------------------------------------------------------------
Yash 2.41 (2016-03-20)
+ '--emptylastfield' option.
+ New option for the "shift" built-in: -A
+ The "shift" built-in now accepts negative counts.
+ New completion script for: git-notes, git-reflog, git-worktree
= The non-interactive shell now exits on an assignment error
in a simple command without a command name.
= The exit status is now non-zero when a for loop has been
interrupted because of an read-only variable.
= When there is no positional parameter, the word """$@" is now
expanded to an empty word, producing the same result as "$@""".
= The behavior of field splitting has been modified to match the
intended interpretation of POSIX: If field splitting yields more
than one field and the last field is empty, the last field is now
removed.
= The "read" built-in now removes leading whitespaces when
assigning the last input value to the variable.
= The first character of $IFS is now always used as a separator
when concatenating positional parameters. Previously, $IFS was
ignored in some corner cases.
* Unclosed process redirections are now detected as syntax error.
* When $ECHO_STYLE was GNU or ZSH, the "echo" built-in was
incorrectly ignoring single hyphen operands.
* The "typeset" built-in was crashing when used with a temporary
assignment to a variable not specified in the built-in operands.
* In the "typeset" built-in, the -r option was not effective when
printing functions.
* The "typeset" built-in now detects combination of the -f and -g
options as an error.
* The "fg" and "bg" built-ins no longer try to resume a non-job-
controlled job when given no operand.
* In range brace expansion, integers were not always parsed
correctly.
* The "fc" built-in was not handling the history range correctly
when the range was specified with an unused entry number.
* The "fc" built-in was incorrectly rejecting the syntax of the
form "fc -s foo=bar n".
* The interactive shell was unexpectedly forgetting the exit status
of background jobs when reporting the job status.
* Fixed potential undefined behavior during reading a history file.
* Parameter expansions of the form ${foo/bar/baz} are now rejected
in the POSIXly-correct mode, as documented in the manual.
* Single- or double-quoted empty words were incorrectly being
removed in field splitting.
* Backslash escapes are now recognized in parameter indexes.
----------------------------------------------------------------------
Yash 2.40 (2016-01-09)
= The "unset" built-in no longer rejects variable names containing
the "=" symbol as an error. They are now silently ignored.
= In the POSIXly-correct mode, unclosed here-documents are now
treated as an error.
* Fixed possible arithmetic overflow errors in memory allocation
which might result in an undefined behavior.
* Fixed crash on assigning a floating-point number in arithmetic
expansion.
* Fixed memory leak on finding a command in a relative path from
$PATH.
* The parameter expansion ${foo##bar*} was being treated like
${foo##bar} where the asterisk should match up to the end of the
parameter value.
* The parameter expansion ${foo%%*} was being expanded to ${foo}
where it should expand to an empty string.
* The "getopts" built-in no longer rejects digits as option
characters.
* The non-interactive shell no longer exits when the "command"
built-in executes the "." built-in and the script is not found.
* Fixed incorrect exit status of simple commands where command
substitution is performed during command word expansion which
yields no command line words.
* The "exec" built-in now correctly exits with an exit status of
127 for a script file not found.
* Pipes were not being connected as expected during command word
expansion.
* The "fg" and "bg" built-ins now report an error when they fail to
print the job name.
----------------------------------------------------------------------
Yash 2.39 (2015-08-27)
+ New options for the "read" built-in: -e, -P, -p
+ New completion script for: passwd, valgrind
- The configuration option '--disable-alias' has been dropped.
= The "read" built-in now requires the -e (--line-editing) option
to enable line-editing.
= The behavior of the "trap" built-in now conforms to POSIX.1-2013.
The built-in prints the traps for the calling shell rather than
the subshell when it is executed in a command substitution.
= The manual for the "return" built-in has been clarified as to
what the built-in can return from. The behavior of the built-in
has been modified accordingly. It no longer interrupts the "eval"
and "fc" built-ins.
* Crash on division by zero with the "/=" or "%=" operator
in arithmetic expansion.
* Crash in the "complete" built-in called without the -D option.
* Yash no longer tries to find the profile and rcfile scripts in
the root directory when $HOME is not set.
* The "read" built-in with a single operand was failing to trim
initial IFS whitespaces in field splitting.
* The "read" built-in was not handling backslashes correctly in
field splitting if $IFS contained a backslash.
* The "-o allexport" option was being ignored when an array is
assigned by the "read" built-in with the -A option.
* Traps are no longer handled while waiting for input with line-
editing in the "read" built-in.
* Operands to the "set" built-in are now correctly completed.
* Minor fix in completion script for "git-svn".
----------------------------------------------------------------------
Yash 2.38 (2015-06-21)
+ New completion scripts for: git-rm
= In the POSIXly-correct mode, functions must now be defined with a
portable name.
* Backslashes following IFS characters were wrongly being dropped
in field splitting.
* In the POSIXly-correct mode, non-portable variable names are no
longer allowed in for loops.
* Completion error on words following a tilde expansion.
* Completion error on moved or copied tracked files for git-add and
git-commit.
* Completion error on untracked file for git-commit.
----------------------------------------------------------------------
Yash 2.37 (2015-01-25)
+ Updated completion scripts for:
git-checkout (Git 2.1.2), git-push (Git 2.0.1), git-submodule
(Git 2.1.2).
----------------------------------------------------------------------
Yash 2.36 (2014-04-06)
+ New completion scripts for: git-describe, tig.
+ Updated completion script for: git-branch (Git 1.9.0).
----------------------------------------------------------------------
Yash 2.35 (2013-06-08)
+ '--traceall' option.
+ New completion scripts for:
git-clean, git-grep, git-ls-remote, git-submodule,
git-whatchanged
+ Updated completion scripts for:
git-cherry-pick, git-rebase (Git 1.8.1.4),
ssh, ssh-add, ssh-keygen (OpenSSH 6.2)
= The condition for exiting the shell when the -e option is enabled
has been changed in accordance with the 2013 edition of
POSIX.1-2008.
= The "++" and "--" operators are no longer supported in the
POSIXly-correct mode.
= The $RANDOM variable now always returns random numbers, ignoring
the value from the environment variable, if any.
= If yash encounters a too long line that cannot be handled while
reading a history file, it now tries to keep reading the rest of
the file rather than stopping reading.
= Very long command lines are no longer saved in the history file.
* Minor fix in a syntax error message.
* Minor fix in completion script for "git", "ssh" and "rsync".
----------------------------------------------------------------------
Yash 2.34 (2013-02-23)
+ New "test" built-in operator: =~, -o (unary)
+ New completion scripts for:
configure, git-name-rev, git-request-pull, make, rsync
= A syntax error or expansion error in .yash_profile or .yashrc
no longer makes the shell exit even when the shell is not
interactive.
= In line-editing, overwritten characters are now restored when you
hit the backspace key.
= In line-editing, the undo history is no longer saved for each
backspace.
* Fixes in completion scripts for "git".
----------------------------------------------------------------------
Yash 2.33 (2012-10-27)
= The "help" built-in now prints brief usage of built-ins.
= Some error messages for command syntax error have been revised.
= Some built-ins now check command syntax more strictly.
* The "set" built-in aborts the shell on a command syntax error
as specified in POSIX.
----------------------------------------------------------------------
Yash 2.32 (2012-09-22)
+ Man page and HTML manual in English and Japanese.
= The "help" built-in now prints part of the man page.
* Fixes in completion scripts for "git".
----------------------------------------------------------------------
Yash 2.31 (2012-06-24)
+ Completion of directory stack indices in extended tilde
expansion.
+ New option for the "complete" built-in: --dirstack-index
+ Completion for "svn" version 1.7.
* Fixes in "git", "tar" and "su" completion scripts.
----------------------------------------------------------------------
Yash 2.30 (2012-02-04)
* Fixed pathname completion for redirections.
+ New completion scripts for:
svn, git, gitg, gitk, and gitx.
* Minor fixes in completion scripts.
----------------------------------------------------------------------
Yash 2.29 (2011-10-15)
+ An alias value now can contain newlines.
* Fixed invalid memory access on printing an empty array using the
"typeset" built-in.
* The function body is now correctly executed in a subshell when
the body is defined using the (...) compound command.
* In line-editing, the undo command can now be applied only to the
history entry that is being edited.
----------------------------------------------------------------------
Yash 2.28 (2011-08-20)
= In an interactive shell, mail check is now done before job status
report.
* Fixed arithmetic expansion evaluating some expressions that
should not be evaluated.
* Fixed the "array" built-in removing the wrong elements when
positive and negative indices are intermixed with the -d option.
* Fixed the EXIT trap being wrongly executed after a command-not-
found error.
* The EXIT trap is now executed with the correct redirection when
the last command had redirection.
* The "exec" built-in now correctly exports arrays that are just
assigned.
* ${#@} is now correctly expanded to an array of integers that
represent the lengths of array elements.
* Fixed infinite loop in sequential brace expansion.
* Fixed configuration file parsing in completion of the "ssh"
command.
* The "-T" option of the "ln" and "mv" commands now can be
completed.
* The EXIT trap now can be completed.
----------------------------------------------------------------------
Yash 2.27 (2011-05-16)
* Minor bug fixes.
+ New completion scripts for:
awk, chsh, gawk, nawk, pgawk, scp, sftp, ssh-add, ssh-agent,
ssh-keygen, su, sudo, sudoedit, and useradd.
* Fix in completion scripts for the "set" and "tar" commands.
----------------------------------------------------------------------
Yash 2.26 (2011-02-17)
+ New option for the "return" built-in: -n (--no-return)
= Error messages have been revised.
= Shell option names have been generalized: Option names are now
case-insensitive. Non-alphanumeric characters are ignored in
option names. Options can be inverted by prefixing "no" to
their names.
= "case foo in (esac) bar; esac" is now rejected in the POSIXly
correct mode.
= The "-o noexec" option is now ignored in an interactive shell.
= New mail notification is now printed only when the mailbox file
is not empty.
= "printf %c ''" now prints nothing as "printf %c" do.
= In an invocation of the "complete" built-in with the -A or -R
option, the pattern is now matched against the last component of
the pathname when generating pathname candidates with the -f
option.
* Function names containing an '=' sign can now be specified as
arguments to the typeset and unset built-ins (with the -f
option).
* Fixed the exit status of iterative execution that was interrupted
by SIGINT.
+ New completion scripts for:
bsdtar, eview, evim, gex, gnutar, gtar, return, rgview, rgvim,
rview, rvim, slogin, ssh, tar, and which.
* Many fixes in completion scripts for:
bash, chmod, dash, less, mksh, set, sh, and umask.
----------------------------------------------------------------------
Yash 2.25 (2010-11-21)
= In the completion candidate list, options are now sorted case-
insensitively.
= While executing a completion function, the $IFS is reset to the
default value.
+ New completion scripts for:
bash, csplit, dash, diff, ed, egrep, env, ex, expand, fgrep,
file, find, fold, getconf, grep, gview, gvim, gvimdiff, head,
iconv, id, join, ksh, less, ln, locale, man, mesg, mkdir, mkfifo,
mksh, more, mv, newgrp, nice, nl, nohup, od, paste, patch,
pathchk, pr, ps, renice, rm, rmdir, sed, sh, sort, split, stty,
tail, tee, time, touch, tr, uname, uniq, vi, view, vim, vimdiff,
wc, who, xargs, and yash.
* Many fixes in completion scripts for:
cat, cd, chgrp, chmod, chown, cmp, comm, cp, crontab, cut, date,
df, du, exec, ls, and set.
----------------------------------------------------------------------
Yash 2.24 (2010-10-03)
+ New option for the "." built-in: -L
+ New options for the "command" built-in: -a, -f, -k
- Removed the -B option for the "command" built-in.
= Fixed configuration process so that the shell can handle all
kinds of signals on FreeBSD.
= [line-editing] New command completion mechanism. The "complete"
built-in now has new syntax and semantics. Completion settings
are now autoloaded from $YASH_LOADPATH.
+ New completion scripts for:
basename, bg, cat, chgrp, chmod, chown, cmp, comm, command, cp,
crontab, cut, date, df, du, export, popd, pushd, readonly, type,
".", and "[".
= Revised completion scripts for:
alias, array, bindkey, break, cd, complete, continue, dirs,
disown, echo, eval, exec, exit, fc, fg, getopts, hash, help,
history, jobs, kill, ls, printf, pwd, read, set, suspend, test,
trap, typeset, ulimit, umask, unalias, unset, and wait.
- Removed completion script for the "return" built-in.
= Short options now come before long options in a completion
candidate list.
* Symbolic links to non-existent files can now be completed.
* Other fixes in command completion.
* Fixed invalid memory access on parameter expansion failure in
redirection.
----------------------------------------------------------------------
Yash 2.23 (2010-07-29)
* Traps are no longer handled during completion to avoid messing up
the display.
* Fixed invalid memory access during completion. When the notify
option is enabled, the shell was wrongly trying to notify the job
status while executing a candidate generator function.
* The "-o verbose" option is now disabled during completion to
suppress the auto-loaded script being printed.
* Fixed completion script for the "kill" built-in.
----------------------------------------------------------------------
Yash 2.22 (2010-07-25)
+ New "test" built-in operators: -G, -O, -N
+ Completion settings are now autoloaded from $YASH_COMPPATH.
+ New completion scripts for:
alias, array, bindkey, break, cd, complete, continue, dirs,
disown, echo, eval, exec, exit, fc, fg, getopts, hash, help,
history, jobs, kill, ls, printf, pwd, read, return, set, suspend,
test, trap, typeset, ulimit, umask, unalias, unset, and wait.
* Fix a bug that was causing a signal received by a just-created
subshell to be wrongly ignored.
* Other bug fixes
----------------------------------------------------------------------
Yash 2.21 (2010-06-18)
+ Command line completion
= In an interactive shell, the value of $LINENO is now reset to 1
every time a command is input and executed.
* The "function" keyword was not recognized by "command -v".
* Fixed handling of SIGINT so that the interactive shell properly
gets back to normal after receiving SIGINT.
* Input reading functions rewritten, including some bug fixes.
----------------------------------------------------------------------
Yash 2.20 (2010-05-16)
+ Function definition using the "function" keyword.
= The "-nt" and "-ot" operators of the "test" built-in now consider
a non-existent file older in favor of Korn shell.
= [line-editing] some editing commands have been renamed:
vi-change-all -> vi-change-line
vi-yank-and-change-all -> vi-yank-all-change-line
vi-append-end -> vi-append-to-eol
* [line-editing] the clear-and-redraw-all command was broken.
----------------------------------------------------------------------
Yash 2.19 (2010-02-14)
+ The "ulimit" built-in is now available on FreeBSD.
+ In mail checking, the timestamp of the mail file is now compared
by the nanosecond if possible.
+ [line-editing] new line-editing commands:
oldest-history-bol, newest-history-bol, return-history-bol,
prev-history-bol, next-history-bol,
beginning-search-forward, beginning-search-backward
= Faster filename pattern matching.
= [line-editing] the "accept-line" command no longer accepts a
failing history search result.
= [line-editing] the following commands have been changed not to
move the cursor to the beginning of the line:
oldest-history, newest-history, return-history,
prev-history, next-history
The new commands whose names end with "-bol" provide the
previous behaviors.
* Fixed broken output of array assignment traces.
* [line-editing] the "vi-edit-and-accept" command now handles the
count.
* [line-editing] fixed the cursor position after the
search-again-forward/backward command in the emacs-like mode.
----------------------------------------------------------------------
Yash 2.18 (2009-12-27)
+ New operators for string comparison in the "test" built-in:
==, ===, !==, <, <=, >, >=
+ Operators "-nt" and "-ot" in the "test" built-in now compares the
modification time by the nanosecond if possible.
+ '--default-directory' option for the "cd" and "pushd" built-in.
+ '--remove-duplicates' option for the "pushd" built-in.
+ The right prompt and the styler prompt.
+ '--le-alwaysrp' option.
= The interpretation of escape sequences to change the font in
$PS1 and $PS2 has been changed.
= $PS3 no longer initialized.
= Escape sequences are now interpreted in $PS4 as well as in $PS1
and $PS2.
= The "echo" and "printf" built-ins now can print a null character.
* [line-editing] $LINES and $COLUMNS were wrongly ignored.
* [line-editing] fixed font color for some terminals.
----------------------------------------------------------------------
Yash 2.17 (2009-12-04)
+ '--le-visiblebell' option.
+ New operators for version comparison in the "test" built-in:
-veq, -vne, -vgt, -vge, -vlt, -vle
+ [line-editing] "eof" command
= The "typeset" built-in now prints only local variables when
invoked without the -g option or operands.
= The "typeset" built-in now prints function definitions in a
pretty format.
= When not in POSIXly-correct mode, commands in command substitu-
tion are now parsed when the command containing the substitution
is parsed.
* Fixed the parse error on parameter expansion "${#}".
* Fixed the "wait" built-in wrongly trying to wait for non-parent
processes when invoked in a subshell.
* [line-editing] vi-replace-char command was broken.
* Many other bug fixes
----------------------------------------------------------------------
Yash 2.16 (2009-10-17)
+ '--curbg' and '--curstop' options.
= '--curasync' option is now set by default.
= Changed exit status of a while/until loop whose body is empty.
= The "return" and "exit" built-ins now accepts an exit status of
256 or larger.
= The "echo" built-in now interprets octal escapes only beginning
with a backslash followed by a zero.
* Fixed a syntax error of a special built-in invoked thru the
"command" built-in causing the non-interactive shell to exit.
* Fixed the exit status of the shell when the EXIT trap is set.
* The '--allexport' option was wrongly ignored by the "read" and
"getopts" built-ins.
* Fixed segfaults and other errors in the "getopts" built-in.
* [line-editing] Fixed the vi-replace-char command causing invalid
memory access.
* [line-editing] Fixed the emacs-just-one-space command not leaving
space(s).
----------------------------------------------------------------------
Yash 2.15 (2009-09-07)
+ An interactive shell now can be interrupted by SIGINT.
+ Bracket expressions in pathname expansion are now fully supported
(provided that libc's regex implementation is correct).
= The "suspend" built-in now requires the -f option to suspend an
interactive shell that is a session leader.
= The shell no longer automatically sets the $YASH_LE_TIMEOUT
variable.
= A job-control shell now stops itself when invoked in the
background.
= A job-control shell no longer ignores SIGTTOU by default.
= The '--nocaseglob' option no longer affects pattern matching in
parameter expansions of the form "${var#xxx}", "${var%xxx}", etc.
* Fixed pathname expansion on redirection target.
* Couldn't set a signal handler to the default by the "trap"
built-in if the signal was ignored on invocation of an inter-
active shell.
* Fixed accidental interruption of built-ins by signals.
* Fixed parser so that a non-simple command is properly parsed
after alias substitution.
* Various bug fixes
----------------------------------------------------------------------
Yash 2.14 (2009-08-07)
+ The -l option for the "bindkey" built-in.
+ Negative array indices are now allowed.
= $PWD is now set to "/" (rather than "/..") after "cd /..".
= The "command" built-in with the -vb option now ignores shell
keywords, aliases and functions.
= Most of the built-ins now prints an error message and returns
non-zero when they cannot print something to the standard output.
= The "pwd" and "times" built-ins now fail when an operand is
given.
= The shell no longer exits when an assignment for a special
built-in failed if not in POSIXly-correct mode.
* "cd //" was failing if the current directory is "/".
* Invoking the "bindkey" built-in in the yashrc file was causing an
invalid memory access.
* The "command" built-in with the -vb option was failing to find
regular built-ins that are not in $PATH.
* The "dirs" command was going into an infinite loop if given an
argument.
* The -c and -d options are wrongly rejected by the "ulimit"
built-in.
* The "fg" built-in now refuses more than one operands in POSIXly-
correct mode, as described in the help.
----------------------------------------------------------------------
Yash 2.13 (2009-07-28)
+ "history" built-in
+ The -i option for the "eval", "break" and "continue" built-ins.
+ The value of the $COMMAND_NOT_FOUND_HANDLER variable is now
executed when a command is not found.
- '--autocd' option
= The exit status is now one when the "return" built-in is used