Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Suggestion for ZSH, who do I send it to?
- X-seq: zsh-workers 33998
- From: Micah Waddoups <micah@xxxxxxxxxxxx>
- To: zsh-workers@xxxxxxx
- Subject: Suggestion for ZSH, who do I send it to?
- Date: Wed, 17 Dec 2014 10:46:03 -0800
- List-help: <mailto:zsh-workers-help@zsh.org>
- List-id: Zsh Workers List <zsh-workers.zsh.org>
- List-post: <mailto:zsh-workers@zsh.org>
- Mailing-list: contact zsh-workers-help@xxxxxxx; run by ezmlm
So, I have a few suggestions. Are you open to using GNU libraries in
ZSH? If so, I was thinking how ZSH is so powerful (and easy to use),
that it can actually handle all types of data -- like all 256 characters
of ASCII. So with multibyte turned off that means binary, even if its a
little slow. But here is the problem with dealing with binary, or
unusual characters through ZSH, every operation requires using several
ZSH builtin commands / variable expansions. This makes a process that
converts data into something more usable on the input or the output very
CPU heavy and inefficient. My suggestion is to add a few options to the
sysread and syswrite builtins that come stock with ZSH in the system module:
* -d : (sysread) to make the variable created an integer type
containing the numerical value corresponding to the raw byte value,
for -s 1; and for -s 2+ (reading more than a single byte), make it
an array with each indice containing a string of decimal digit(s),
whose numerical value is generated the same way, representing the
value for each byte.
* -h : (sysread) to make a string value that is two characters per
input byte, representing the value of the byte in hexadecimal
(padded with 0 if less than 16, and obviously as with above, a null
would equal 00). This would make Zsh able to function for whatever
given needs (boot environments, less prevalent unix-like systems)
without having to supply an xxd program, and it would be much more
efficient processing when any math is involved in the script.
* -c : (syswrite) to make string the name of a variable who's value is
processed in the same way as (( math context )) in hexadecimal, two
digits at a time. In other words starting at the beginning of the
string, convert two hexadecimal characters into one byte, then the
next two, etc., and any characters that are members of the IFS
variable are ignored and discarded, and any other encountered
non-hexadecimal characters causing an error, and lastly any
remaining single digit hexadecimal characters either ignored or
converting to it's value as if it had a 0 in front of it (My
suggestion leaves that up to you who program this).
And my other suggestion is that you add support for (statically?)
compiling with the GNU MPFR library, so that in systems where this is
possible, super long numerical values can be handled in the math context
(with the appropriate min and max precision variable set super long).
This would make a half a dozen scripting situations work much better
than running out of precision space whenever doing operations that shift
the values several powers of 10 or 2 left or right. More importantly,
depending on bc or gawk to run really long number calculations can be
cumbersome and problematic if they are not present.
While Zsh may not be intended to be a fix-all-do-all shell and
scripting environment. I believe it has the potential to be both the
best user-friendly environment and the most versatile rescue
environment, capable of replacing all other command-line shells in unix
systems.
--
Micah micah@xxxxxxxxxxxx <mailto:micah@xxxxxxxxxxxx>
AskMicah.Net <http://askmicah.net>, Problem Solving Agency
Messages sorted by:
Reverse Date,
Date,
Thread,
Author