Hacker Newsnew | past | comments | ask | show | jobs | submit | lhecker's commentslogin

I apologize for asking, but did you also understood the "Shell conflicts" section as being the complete list of utilities? The project ships the majority of core utilities (~75%).


Any command not listed under the "Shell conflicts" section is included. In my testing `ln` works great.


It should work on Windows 10. If you're using PowerShell, you do need to have v7.4 or later installed, however.


We actually open-sourced DOS sort and published a port of the DOS find command. The suite then dispatches to the GNU/DOS variant based on heuristics. The installer allows you to pick what variant to use by default if the invocation is ambiguous.


> I would have liked to see head, tail, tr, uniq, and cut.

The project includes all of those. Or were you talking about the past?


I'm a gigantic idiot who can't read. I was reading the table shell conflicts as all the included commands, and not just as a subset of commands that had shell conflicts.

A gigantic idiot. Sorry.


I read the readme that way too - a table with included utils with conflict status, and a list of intenationally excluded utils.

But the rest are in there:

https://github.com/microsoft/coreutils/blob/3fa7aaf832ffc81d...


Now the readme says

"Note: Any command not mentioned is included in this suite. "

which I found quite confusing. It's a very large set, potentially infinite depending on what the universe of all commands is :)

You should link to the list of all the commands in your package.


As hex4def6 said, the idea was that DOS command conflicts are not a good idea, while overriding PowerShell builtins in interactive sessions (PSReadLine) is acceptable, if not a good idea. We open-sourced DOS sort and published a port of the DOS find command. The suite then dispatches to the GNU/DOS variant based on heuristics.


Echo doesn't conflict with the DOS command?


Yup! echo is a CMD builtin and doesn't exist as a dedicated executable.


Sorry, I'm not following the logic. Isn't the same true for dir?


...huh, true. It's weird what kind of mistakes one can do sometimes. This one was almost comically on the nose.


Is there a list of CMD builtins somewhere?


The intent was simply to give people coming from macOS and Linux more of the CLI tools they're familiar with. In other words, agents weren't the focus at all. But if it ends up helping them, that's a good added benefit of course.


Could come pre-installed with cygwin instead.


Cygwin isn't native Windows. Cygwin does many unholy things to enable signals and fork syscall in binaries.

uutils enables fully Windows native commands in the subset of system calls and disk structure Windows supports.


The plan is indeed to make it extensible if time and popularity permits it. LSP would be an extension itself, however, instead of being built into the editor. We want to retain a lean core editor so people can ship it everywhere (e.g. even into small Docker images).


That’s excellent. Thanks for sharing and best wishes to the team’s success and popularity of the new editor!


It's indeed Maple Mono. I love that font!


Abstracting away the `assume_init` is a great idea! I think I could use something like that for the editor. The only concern I have is that the `read` function is templated on the parameter type. I'd ideally _really_ prefer it if I didn't need two copies of the same function to switch over `[u8]` and `[MaybeUninit<u8>]` due to different return types. [^1] I guess the approach could be tuned to avoid this?

Personally, I also like the simpler approach overall, compared to the `BorrowedBuf` trait, for the same reasons outlined in the article.

While this possibly solves parts of pain points that I had, what I meant to write is that in an ideal world I could write Rust while mostly not thinking about this issue much, if at all. Even with this approach, I'd still need to decide whether my API needs to take a `[u8]` or a `Buffer`, just in the mere off-chance that a caller may want to pass an uninitialized array further up in the call chain. This then requires making the call path generic for the buffer parameter which may end up duplicating any of the functions along the path, even though that's not really my intention by marking it as `Buffer`.

I think if there was a way to modify Rust so we can boldly state in writing "You may cast a `[MaybeUninit<T>]` into a `[T]` and pass it into a call _if_ you're absolutely certain that nothing reads from the slice", it would already go a long way. It may not make this more comfortable yet, but it would definitely take off a large part of my worries when writing such unsafe casts. That's basically what I meant with "occupy my mind": It's not that I wouldn't think about it at all, rather it just wouldn't be a larger concern for me anymore, for code where I know for sure that this requirement is fulfilled (i.e. similar to how I know it when writing equivalent C code).

Edit: jcranmer's suggestion of write-only references would solve this, I think? https://news.ycombinator.com/item?id=44048450

[^1]: This is of course not a problem for a simple `read` syscall, but may be an issue for more complex functions, e.g. the UTF8 <> UTF16 converter API I suggested elsewhere in this thread, particularly if it's accelerated, the way simdutf is.


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

Search: