new parser breaks ability to send interactive commands to the shell, add it back
looks like <is_whitespace> opcode will handle this.
From autrijus's talk. can we use this instead of the current string-based compilation.
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.
tcl is not using Keys when getting from aggregates. It probably should, at least for language interoperability.
Still have to:
o catch any real_exceptions thrown. o respect tcl_prompt1, tcl_prompt2 o deal with incomplete input (needs better error handling)
how to do this from inside parrot? RT#36277
(including add pod to all .pir)
TclList's new_from_string method should use the string to list code ...except that it turnsout this is non-trivial.
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.
$
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::info
_Tcl::builtins::info::args((foo))
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.
t/
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.
Perhaps via [namespace import]? Can fake it right now with [inline]
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.
To install Ruby, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Ruby
CPAN shell
perl -MCPAN -e shell install Ruby
For more information on module installation, please visit the detailed CPAN module installation guide.