- interactive tclsh
- new parser breaks ability to send interactive commands to the shell,
add it back
- remove .is_space macro
- looks like <is_whitespace> opcode will handle this.
- PIR Tree
- From autrijus's talk.
can we use this instead of the current string-based compilation.
- Makefile deps
- Should be more explicit about the PMC dependencies in the makefile.
*something* is causing things to get rebuilt unecessarily each time "make tclsh" is run.
- keyed access
- tcl is not using Keys when getting from aggregates.
It probably should,
at least for language interoperability.
- interactive tclsh
- Still have to:
o catch any real_exceptions thrown.
o respect tcl_prompt1, tcl_prompt2
o deal with incomplete input (needs better error handling)
- [interpinfo name]
- how to do this from inside parrot? RT#36277
- migrate all these issues to RT or TODO tests
- update docs [will]
- (including add pod to all .pir)
- string to list
- TclList's new_from_string method should use the string to list code ...except that it turnsout this is non-trivial.
- __set/__read
- All commands should use the __set and __read functions defined in variables.pir instead of get_var. __read's interface conflicts slightly with the way tclparser splits things up - it over-helpfully tries to break the variable part out into array and index - while read is already doing that for us.
- On a related note: No builtins or library code should be dealing with var sigils (i.e.
$
) other than __set and __read.
- subcommand processing
- Convert any commands that use subcommands to [info] style dispatch to ease maintenance. Subcommands invoked in this style get a single container PMC with all their args, but *NOT* the invoking command. so, given the tcl:
[info args foo]
Tcl::info
is called with (args, foo), which then dispatched to:
_Tcl::builtins::info::args((foo))
- implement default globals, etc.
- global variables provided by tcl libary. tclvars.
- global variables provided by tcl interpreter. tclsh
- source per-user settings. tclsh
We should be using the tcl-test target as our language goal. For now, keep enough tests in our local test harness (t/
) so that we don't get any regressions. (Running the tcl test suite takes a while). This means we can get by with basic tests in t/
for now.
Long term goal would be to remove any tests in t/
that are testing things that are already tested in tcl. Partcl's checked in test suite should just be checking partcl-specific functionaliity.
- provide a way to access existing library PIR from Tcl.
- Perhaps via [namespace import]? Can fake it right now with [inline]
- multiple level lists
- [expr]
- Clean up [expr]. MUUUUCH room for improvement there. [expr] is the source of most of our abysmal performance in bench.tcl.
- the expr AST could use a rework. Be nice if it just passed around something invokable.
- clean up expr so that it's not passing around type indicators. - just use PMCs everywhere. (Though we may still need to have CONST vs. VARIABLE types.)
- The type indicator is also used to disambiguate operators and function calls from operands. We can easily remove it for operands, but how to cleanly remove this for operators?
- TBD: strings, floats as operands - (many of the math funcs return floats but you can't specify them, and not everything takes them (try, for example, [expr sin(1) + sin(1)] vs [expr sin(1) * sin(1)].)
- TBD: blocks, commands, and strings as operands
- TBD: logical binary ops & ternary op (need deferred evaluation) ; unary ops; ops that work on strings only.
- TBD: functions that take > 1 arg.
- TBD: Argument type requirements - Currently works ONLY on bitand - esp need to get any that require int-only args, as we can now /generate/ floats, even if we cannot specify them. This is all supportable by MMD - we just need to specify the correct errors to throw.