Skip to content

Files

Latest commit

60a4fd0 · Aug 27, 2020

History

History
199 lines (151 loc) · 6.1 KB

TODO.md

File metadata and controls

199 lines (151 loc) · 6.1 KB

Automation

  • fixup builtin.kill.jobs.test and other timing dependent tasks to be a little slower (on travis at least)

  • use travis to automate all testing, collect results nightly, auto-deploy

    • shells: smoosh bash dash yash zsh still need to install: osh? fish CoLiS ksh?
    • run our tests
      • smoosh suite
      • modernish
      • POSIX test suite
    • automatically export reports
      • smoosh test suite
      • modernish
      • POSIX (test journal summaries, timing)
  • add bosh http://schilytools.sourceforge.net/bosh.html

  • add oil

Implementation TODO

#   cd command echo false getopts kill printf pwd read sh test true wait
#
# ^awk ^basename ^bc ^cat ^cd ^chgrp ^chmod ^chown ^cksum ^cmp ^comm
# ^command ^cp ^cut ^date ^dd ^diff ^dirname ^echo ^ed ^env ^expr
# ^false ^find ^fold ^getconf ^getopts ^grep ^head ^id ^join ^kill
# ^ln ^locale ^localedef ^logger ^logname ^lp ^ls ^mailx ^mkdir
# ^mkfifo ^mv ^nohup ^od ^paste ^pathchk ^pax ^pr ^printf ^pwd
# ^read ^rm ^rmdir ^sed ^sh ^sleep ^sort ^stty ^tail ^tee ^test ^touch 
# ^tr ^true ^tty ^umask ^uname ^uniq ^wait ^wc ^xargs
  • $$ not installed for symbolic shell but PPID is trickiness: $$ is unchanged in subshells, which can signal the top-level need to carefully hold on to such signals use procs heavily. initialize things with main shell in proc 0 change shim to send over the full OS state, including the proc list render all of the live procs side by side collapse all but the main shell and the active proc?

  • bools are technical debt

  • generalize tc_setfg use in job control to pull code out of system.ml

  • non-special shell variables LINENO ENV (interactive only)

  • faithful handling of PATH_MAX

Known bugs/issues to investigate

Refactoring

  • refactor semantics.lem to use is_terminating_control don't immediately step! Break _n -> Done

  • use monads (better parsing, etc.)

  • re-align shim.ml and libdash's ast.ml

  • expansion: make null more explicit... simplify matches?

  • collapse logic for tracing to there's just one eval function

    • split out step_eval and log_step_eval... but also use log_step in the middle
  • there's some serious technical debt around triggering expansion within commands. need a uniform set of options/modes so that our congruences can be cleaner

stepper

  • JS/webpage
    • nicer way to edit the environment and home directories
    • way to configure fs interactions w/dash parser and host fs way to explore FS
    • set STDIN
    • use syntax highlighting in editor window
    • favicon
    • cleaner handling of environment, etc. add positional variables to display only show what changed
    • presets
    • more shell info
    • use a JS contracts/types library (TypeScript?)
  • CLI
    • pretty printer for JSON output

Long-term

Resolving unspec behavior

  • errexit

I wonder how many scripts would break if you changed the semantics of errexit-disabling (EV_EXIT/CMD_IGNORE_RETURN/whatever) so that it only had effect on a syntactic command, not the entire dynamic extent of a command.

  • function defns must be compound commands f() echo "$@"; f hi vs f() if true; then echo "$@"; fi; f hi (but not in dash, zsh, ksh, ksh parser)

  • does fc -l print the fc -l itself?

  • what do shells do with PS1=${NEVERSET-$(cmd)}? or PS1=${PS1+$(cmd)}

  • what is the notion of job/forking? id:20190721164533.z3wmmjev3lih5fm5@chaz.gmail.com

  • Bash "If parameter is '*' or '@', the result of the expansion is unspecified." weird choice in bash:

  set -- 'a b' 'c' 'd'
  echo ${#*}

yields

  3
is also not _really_ a bug