File: NEWS

package info (click to toggle)
yash 2.60-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,152 kB
  • sloc: ansic: 34,578; makefile: 851; sh: 808; sed: 16
file content (1391 lines) | stat: -rw-r--r-- 66,499 bytes parent folder | download
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
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
# History of Yash

## Yash 2.60 (2025-09-15)

  - Updated the sample initialization script (yashrc):
    - Redefined the `open` function for WSL to use `rundll32.exe`
      instead of `cmd.exe` for better stability.
    - `$VISUAL` is now preferred over `$EDITOR` for the default value of
      `$FCEDIT`.
  - [line-editing] The "vi-edit-and-accept" command now honors the
    `VISUAL` and `EDITOR` variables, so that you can use your favorite
    editor.
  - [line-editing] Added completion for `fd`, `dvtm`, `mw`
    (mutt-wizard), and `typst`.
  - [line-editing] Completion for `man` now supports the `-l`
    (`--local-file`) option.
  - The `export`, `readonly`, and `typeset` built-ins now print the `--`
    separator before the variable names when printing variables whose
    names begin with a hyphen (`-`), so that the output can be safely
    re-parsed by the shell. The same applies to function names.
  - Fixed a bug where the shell continued to export the previous value
    of an array even after it was updated using the `array` built-in.
    Also fixed an issue where the internal cache was not refreshed for
    the `PATH`, `CDPATH`, and `YASH_LOADPATH` variables after being
    modified via the `array` built-in.
  - Fixed a bug where single quote characters (`'`) in the `word` of 
    parameter expansions of the forms `${foo+word}`, `${foo-word}`,
    `${foo=word}`, and `${foo?word}` were treated as quoting characters
    when the expansion was in double quotes.
  - Fixed a bug where tilde expansion was performed on the `word` of
    parameter expansions of the forms `${foo+word}`, `${foo-word}`,
    `${foo=word}`, and `${foo?word}` even when the expansion was in
    double quotes.

## Yash 2.59 (2025-05-13)

  - Improved POSIX.1-2024 support:
    - When an error that would terminate a non-interactive shell occurs
      in an interactive shell, the shell now discards any remaining
      commands that were typed but not yet executed, and immediately
      continues to read the next command. Parameter expansion errors and
      variable assignment errors are examples of such errors.
    - When a foreground job suspends in an interactive shell, the shell
      now discards any remaining commands that were typed but not yet
      executed, and immediately continues to read the next command.
    - The shell now considers a job to be suspended when any child
      process suspends in a pipeline, instead of when all child
      processes suspend.
    - Patterns no longer expand to the filename `.` or `..` in pathname
      expansion.
    - When the `exit` built-in is used without an operand in a trap
      action, the shell now exits with the exit status of the last
      command executed before the trap action, instead of the exit
      status of the last command executed in the trap action.
    - The `read` built-in now returns a more specific exit status
      depending on the cause of the error.
    - The `read` built-in now supports the `-d` option, which can be
      used to specify a delimiter character.
    - The `readonly` built-in now refuses to make the `$LINENO`,
      `$OLDPWD`, `$OPTARG`, `$OPTIND`, and `$PWD` variables read-only in
      the POSIXly-correct mode.
    - The `test` (`[`) built-in no longer accepts binary operators `-a`
      and `-o` and parentheses `(` and `)` in the POSIXly-correct mode.
    - 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.
    - The `true`, `false`, and `pwd` built-ins are now substitutive
      built-ins.
    - The `cd` built-in now exits with status code 5, when an empty 
      operand is supplied.
    - The `cd` built-in now returns exit status 1 if the `$PWD` or
      `$OLDPWD` variable cannot be updated because it is read-only.
    - The interactive shell now errors out if pathname expansion applied
      to a file redirection operand results in more than one pathname,
      regardless of whether the POSIXly-correct mode is enabled.
    - The shell now becomes interactive if the shell is reading commands
      from the standard input and the standard input and standard error
      are both connected to a terminal. Previously, the shell became
      interactive only if there was no command line operand as well.
    - Job control can now be enabled even if the shell does not have a
      controlling terminal.
    - If the job-control shell is started in the same process group as
      the session leader, the shell now forces the process group to be
      in the foreground, rather than suspending the shell itself until
      brought to the foreground by some other means.
    - The shell now returns exit status 128 when encountering a command
      read error.
    - When the shell is exiting with an exit status that indicates that
      that the last command was terminated by a signal, the shell now
      terminates with the same signal to propagate the command's
      termination status.
    - When an interactive shell starts an asynchronous command, its job
      number and process ID are now printed to the standard error.
    - The `printf` built-in now treats as an error a numeric operand
      that starts with a quote followed by more than one character.
      For example, `printf '%d' '"ab'` used to silently ignore the
      character `b`, but now it is treated as an error.
    - When a field is made up of a single tilde expansion that expands
      to an empty string, the field is no longer removed from the
      command line words.
    - When a tilde expansion produces a directory name that ends with a
      slash and the expansion is followed by a slash, the trailing slash
      in the directory name is now removed to maintain the correct
      number of slashes.
  - The syntax for specifying a file descriptor with a variable name in
    braces before a redirection operator is now reserved for future
    implementation. The syntax is now treated as a syntax error.
  - [line-editing] Updated the completion scripts to support Git
    2.48.1.
  - [line-editing] Added completion for `git-mv`, `bmake`, `gmake`,
    `fnf`, `cmus`, `cmus-remote`, and `catgirl`.
  - [line-editing] Completion for `cd` and `pushd` no longer incorrectly
    performs pathname expansion on the directory names listed in
    `$CDPATH` before searching for candidate directories.
  - Fixed a possible crash when the `read` built-in reads input in an
    interactive shell.
  - Subshells created for executing a process redirection in a job-
    control shell now ignore the `SIGTSTP` signal.
  - Added a workaround for an apparent bug in glibc's fsetpos function
    that prevents the shell from updating the history file.
  - Previously, you could enable job control in a subshell by setting
    the `-m` option inside the subshell. This undocumented behavior has
    been removed.

## 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
     outside a function in an interactive shell.
  =  Revised command search and execution.
  *  The shell would not exit after the "exit" built-in twice in a row
     when you have $PROMPT_COMMAND set and you have stopped jobs.
  *  The "notifyle" option not working with $PROMPT_COMMAND set.
  *  [line-editing] Redoing was broken.
  *  [line-editing] The command line was not redrawn after trap
     handling.
  *  [line-editing] Fixed some bugs in the vi-edit-and-accept command.

----------------------------------------------------------------------
Yash 2.12 (2009-07-18)

  +  Emacs-like line-editing.
  +  "bindkey" built-in.
  +  The $PROMPT_COMMAND variable now can be an array.
  +  The value of the $YASH_AFTER_CD variable is now executed after
     the working directory was changed.
  =  The "fg" and "bg" built-in now always sends SIGCONT to the
     continued job.
  =  The "exit" built-in now warns about stopped jobs even when
     executed after the "fg", "bg", "disown" or "wait" built-in.
  *  In vi-like line-editing, the wrong text was put after 30th yank.
  *  In vi-like line-editing, the "s" command cannot be used if the
     cursor is at the beginning of line

----------------------------------------------------------------------
Yash 2.11 (2009-06-22)

  +  Added the "--histspace" and "--le-noconvmeta" options.
  +  Support for the $HISTRMDUP variable.
  +  Support for the $YASH_LE_TIMEOUT variable.
  +  The "kill" built-in with the "-l" option now accepts signal names
     as operands.
  =  The "--le-convmeta" option now is a Boolean option.
  =  The "$-" special parameter now includes the "l" flag if the
     shell is a login shell.
  *  An empty case command "case i in (*) esac" now always returns the
     exit status of zero.
  *  Quoted words were incorrectly expanded with backslashes when the
     "-f" option is set.
  *  Fixed invalid memory access in the "v" command of vi-like
     line-editing.

----------------------------------------------------------------------
Yash 2.10 (2009-05-27)

  +  History search in line-editing.
  =  Empty lines are no longer stored in the history.
  =  In the vi-like line-editing, "cw" and "cW" now work as in vi.
  *  Setting the "notifyle" option caused a segfault if yash was
     configured with line-editing disabled.
  *  In line-editing, undoing a change to a history entry did not
     restore the cursor position properly.
  *  Some fixes for invalid memory access during line-editing.

----------------------------------------------------------------------
Yash 2.9 (2009-05-10)

  +  Line-editing in the interactive mode.
  x  Line-editing is not fully implemented.
  +  Multiple instances of shell that use the same file for the
     history file now share the history.
  -  The "history" built-in has been removed.
  =  Now non-ASCII alphabets are allowed in variable names.
  =  Now nested parameter expansions must be enclosed by braces.
  =  The "help" built-in now prints an error message if the specified
     built-in is not found.
  *  Fixed floating-point arithmetics in arithmetic expansions.
  *  Fixed parser for arithmetic expansions that was incorrectly
     rejecting identifiers that start with underscores.
  *  Fixed parser that had trouble parsing parameter expansions
     containing the hash sign like "${#=x}".
  *  Fixed the help message for the "pwd" built-in.

----------------------------------------------------------------------
Yash 2.8 (2009-04-18)

  +  Brace expansion with delta: {a..b..c}
  +  The "command" built-in's -b and -B options now can be used with
     the -v and -V options.
  =  Yash now conforms to POSIX.1-2008.
    .  The "read" built-in now always removes trailing white-spaces
       from the input.
    .  The results of tilde expansion are no longer subject to field
       splitting and pathname expansion.
    .  The "pwd" built-in with the -P option no longer sets the $PWD
       variable.
    .  "cd -L foo/.." is no more the same as "cd -L ." in that it is
       an error when the directory "foo" does not exist.
    .  The "command" built-in's -p option now can be used with the -v
       and -V options.
    .  In POSIXly-correct mode, all asynchronous commands now ignore
       SIGINT and SIGQUIT (even when job control is active).
  *  When executing commands edited by the "fc" built-in, the $?
     variable was incorrectly assigned the exit status of the editor
     invoked by "fc".
  *  Backslashes, commas and braces in $IFS were incorrectly ignored
     in field splitting.
  *  Pathname expansion failed if we do not have the read permission
     for the specified directory even when we only need the search
     permission.
  *  The signal mask of commands invoked by the shell now inherits
     that of the shell (except for trapped signals).
  *  The "command" built-in now properly handles directories given as
     the commands when the "autocd" option is on.

----------------------------------------------------------------------
Yash 2.7 (2009-03-02)

  +  Parameter expansion ${array[index]:=value} now allows assignment
     to an empty array element.
  +  Here-string by the "<<<" operator.
  +  New redirection operator ">>|" opens a pipe.
  -  Loop pipes no longer supported.
  =  The $IFS variable is always initialized to the default value when
     the shell is invoked.
  *  The "echo" and "printf" built-ins now print an error message on
     failure.
  *  A quoted period at the beginning of a filename was not properly
     matching during filename expansion.

----------------------------------------------------------------------
Yash 2.6 (2009-02-11)

  +  Added the -q option to the fc built-in.
  +  Compound commands may now contain no commands inside.
  *  "alias -p" now prints commands with proper escape.
  *  In POSIXly-correct mode, a semicolon followed by the identifier
     followed by "for" is now treated as an error.
  *  Global aliases are now allowed after compound commands.
  *  The "fg" and "wait" built-ins were causing invalid memory access
     when the "-o notify" option is enabled.

----------------------------------------------------------------------
Yash 2.5 (2009-01-16)

  =  Redirection of FDs used by the shell is now error.
  *  Some redirection syntax errors were overlooked.
  *  Fixed the "sig.y" test failure.
  *  When an "exec" command with redirections is enclosed in a brace
     with redirections, the redirections to the brace are now properly
     closed after execution.
  *  Fixed parsing error of a comment after the identifier of a for
     statement.

----------------------------------------------------------------------
Yash 2.4 (2008-12-23)

  =  The long option for the -p option of the "jobs" built-in has been
     changed from "--pid-only" to "--pgid-only".
  *  Trap of SIGCHLD, SIGINT, SIGTERM, SIGQUIT, SIGTSTP, SIGTTOU were
     wrongly set to "ignore" in some condition.
  *  Signal handlers for SIGINT, SIGTERM, SIGQUIT, SIGTSTP, SIGTTOU
     were mistakenly reset in some moments.
  *  Fixed the exit status of the "wait" built-in returned when
     interrupted by a signal.
  *  Fixed file access permission test
  *  "command -V xxx/yyy" now prints an error message if "xxx/yyy" is
     not a valid command.

----------------------------------------------------------------------
Yash 2.3 (2008-12-07)

  =  Now changing LC_CTYPE immediately takes effect if the shell is
     interactive and not in the POSIXly-correct mode.
  *  Fixed parameter expansion: empty words are now expanded properly.
  *  Fixed a race condition, which was causing some signals ignored.
  *  Assignments using the typeset/readonly/export built-ins failed to
     update the shell's internal data. This caused the shell to keep
     using the old PATH after the PATH has been changed.

----------------------------------------------------------------------
Yash 2.2 (2008-10-31)

  +  "help", "pushd", "popd" and "dirs" built-ins
  =  The value of $PWD set by the "cd" built-in is fixed. It now has a
     correct value when changing to a relative path from the root
     directory.
  *  Pathname expansion not properly performed for patterns including
     "." or "..".

----------------------------------------------------------------------
Yash 2.1 (2008-10-16)

  +  Array variables
  +  "array", "echo", "printf" and "test" built-ins
  +  The -A option for the "read" built-in
  *  The colon flag in a parameter expansion like "${FOO:-bar}" was
     ignored if the value of the parameter begins with a certain
     character.
  *  The readonly attribute was ignored when an assignment occurs
     against a command invocation
  *  Passing "=" as a name to the "unset" built-in incorrectly unset
     the positional parameters and caused a potential invalid memory
     access.
  *  Field splitting on variable values that consist only of spaces
     produced wrong results.
  *  Test of file access permission now uses the effective user/group
     IDs rather than the real user/group IDs.

----------------------------------------------------------------------
Yash 2.0 (2008-09-25)

  +  "history" built-in
  +  Command redirection
  *  A POSIXly-correct non-interactive shell exits when a particular
     error occurred on a special built-in according to POSIX.
  *  Alias substitution routines were improved.
  *  Other bug fixes

----------------------------------------------------------------------
Yash 2.0 beta2 (2008-09-11)

  +  Command history
  +  "type", "hash" and "fc" built-ins
  =  If the "command" built-in with the -V option fails to find a
     command, an message is printed.
  *  Invocation of an external command with an assignment to the $PATH
     variable caused an invalid memory access.
  *  Single quote not parsed properly in some circumstances.
  *  Other bug fixes

----------------------------------------------------------------------
Yash 2.0 beta1 (2008-09-06)

  +  "read", "getopts" and "command" built-ins
  +  '--autocd' and '--curasync' option
  +  Mail check feature
  +  The prompt command
  =  The "readonly" and "export" built-ins now affects global
     variables by default.
  *  The standard input is no longer buffered
  *  The "typeset" built-in now allows any characters other than '='
     for variable names.
  *  The special parameter $? reflects the exit status of a command
     substitution in a variable assignment.
  *  Many other bug fixes

----------------------------------------------------------------------
Yash 2.0 beta0 (2008-07-27)

  +  "eval", "exec", ".", "times", "umask", "typeset", "export",
     "readonly", "unset", "shift" and "trap" built-ins
  +  "wait" built-in now can be interrupted
  +  Arithmetic expansions
  +  Interactive shell now notifies the process killed by a signal
  -  "/etc/profile" and "~/.profile" are no longer sourced on start-up
  *  Fixed token delimitation in alias substitution
  *  Fixed token delimitation on assignments without values
  *  Many other bug fixes

----------------------------------------------------------------------
Yash 2.0 alpha2 (2008-07-10)

  +  Initialization files such as "/etc/profile" and "~/.yashrc" are
     now sourced on start-up.
  +  '--noprofile', '--norcfile' and '--rcfile' options
  +  "pwd", "set", "exit", "return", "break", "continue", "jobs",
     "fg", "bg", "wait", "disown", "alias" and "unalias" built-ins
  *  '--nocaseglob' was misinterpreted as '-c'.
  *  It was not fully case-insensitive when '--nocaseglob' is on.
  *  If job control is off, an interactive shell no longer prints
     changed status of jobs before prompt.
  =  Error handling for unset parameters was improved.
  =  The help message for 'yash --help' is now much briefer.

----------------------------------------------------------------------
Yash 2.0 alpha1 (2008-06-14)

  +  New options implemented: -x, -h, -a
  =  The default value of 'PS3' is not set in POSIXly-correct mode.
  +  'configure' accepts new '--no-undefined' option
  +  ":", "true", "false", "cd" built-ins
  *  Command hashtable is now cleared when PATH is assigned.
  *  Assertion failure when a null character is input
  *  Many other bug fixes

----------------------------------------------------------------------
Yash 2.0 alpha0 (the first release of version 2.x) (2008-05-26)

  x  Arithmetic expansion is not implemented
  x  Built-ins are not implemented at all