Hacker News new | past | comments | ask | show | jobs | submit login

> Pipelines in Elvish can carry structured data, not just text. You can stream lists, maps and even functions through the pipeline.

Sounds like Powershell.




It is fair to say that Elvish is inspired by PowerShell. It is much more lightweight and much closer to traditional Unix shells, though.


If you're on Unix you may be interested in an object shell a guy I used to work with has been developing. It gives more objecty-ness imo: http://mash-shell.org/


One thing I'd want to see is support for standalone polyglot utilities, i.e. that you can write utilities in any language and they compose seamlessly into the system because they are all launched as independent processes. That is one thing I would like to retain from classic unix-style shells.

The problem of designing the shell becomes both much harder and simpler at the same time. Harder because you need to figure a way to really pass objects from one process to another, which implies some sort of serialization protocol. On the other hand the shell becomes simpler again, because the processes will (most likely) do most of the heavy lifting of managing objects etc.


Powershell 6 is open and runs on Unix.


Looks a bit like it, too, if only in that regard.

No criticism, though. Powershell is brilliant, and I'm glad to see the Unix world starting to take cues from it.


"Powershell is brilliant"

Wot?

Ugly syntax, cryptic error messages and random idiosyncrasies like misplaced semicolons turning variables into lists... The language is a nightmare.


>Ugly syntax, cryptic error messages and random idiosyncrasies

Yeah, nothing like the elegance, straightforward messages, and "no surprises" of POSIX shells...


It might be me succumbing to stereotypes, but POSIX shell syntax feels something that grew organically, out of use and necessity, with basic guiding principles but no set guidelines or rules.

Powershell feels like something designed by committee, it has an internal consistency and logic, but feels bloated and overcomplicated.


>POSIX shell syntax feels something that grew organically, out of use and necessity

Isn't that what everyone hates about PHP?


Consistency and logic comes with a price. But i guess both approches have cons and pros.


The best way I think is: start with either, and prune what has been shown not to work in a version n+1 every few years iteratively.

Provide a good migration path (e.g. for a language that could be a n to n+1 transpiler), and you're set.


Buuuut there's definite room for improvement in unix pipes.


I see the point and to a certain extent agree in theory. But every improvement feels like it's improved on something that just didn't need to be improved, some things become easier, but others become worse. Along the way the simplicity of text streams becomes lost.

I can see a case where passing around structured data could make sense, but Powershell definitely takes things to far by passing around full .net classes that have functionality.


“Simplicity of text streams”

This is a common complaint about PS/elvish/etc, but I’m not sure it makes sense. Is that “simple text stream” tab delimited data? CSV? JSON? XML?

At the end of the day, what you have isn’t just a “simple” text stream; you have a more complex data structure serialized into text, which will need to be parsed by each command in the pipeline for any non-trivial processing.


Quite often, yes it's just text. 90% of the time you're only a string split away from having the structure you need. Most of the more complicated systems are chasing that 10% but complicating the 90%.


> Is that “simple text stream” tab delimited data? CSV? JSON? XML?

Sure. Or all 4 at different points, because we didn't tie ourselves to one format. That's kinda the point.


The Elvish example is a lot neater in Powershell: `(irm https://api.github.com/repos/elves/elvish/issues)|select number, title -first 11`

Can you elaborate on the semicolons? Lists are declared by a comma, not semicolon: `$a = 1,2`, or `$a = @(1)` to enforce it


I think Powershell is pretty much conceptually brilliant, but the syntax and choice of names for various common cmdlets are... umm... not.


PowerShell runs on Unix now.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: