News for hackers. Stuff that matters.
Re:Criticizing Hare language approach for generic data struc... by MrBuddyCasino on Wednesday May 04, 2022 @07:10AM (#31258898)
BYOD combined with "we don't need a package manager" sounds like a particularly bad combination. I understand Rust's "small stdlib but great package ecosystem", but whats the appeal of "anemic stdlib plus no package ecosystem"?

Maybe I would come up with something like this if I only ever worked on Linux software using C, but outside those niches these choices seem weird.

Re:Criticizing Hare language approach for generic data struc... by orthoxerox on Wednesday May 04, 2022 @07:57AM (#31259263)
> but whats the appeal of "anemic stdlib plus no package ecosystem"?

You can declare your language feature complete sooner

Re:Criticizing Hare language approach for generic data struc... by capableweb on Wednesday May 04, 2022 @07:57AM (#31259266)
Correct me if I'm wrong, but Hare doesn't say "we need no package manager" but instead "we don't need a new package manager, use the one your OS provides", at least from how I understand it.
Re:Criticizing Hare language approach for generic data struc... by mumblemumble on Wednesday May 04, 2022 @08:31AM (#31259544)
That strikes me as another C-ism that didn't deserve to be carried forward into a 21st century language.

There's a reason we call it "dependency hell" and not "happy fun fussing with dependency version conflicts among projects that are completely unrelated except that you happen to be using the same computer to work on them time."

Re:Criticizing Hare language approach for generic data struc... by steaminghams on Wednesday May 04, 2022 @10:24AM (#31260870)
The state of the art in package management could be considered Nix and Guix and those are both operating system level package managers and thats why they are better than npm or pypi or cargo, as the aforementioned language specific package managers _dont_ handle dependency hell as native dependencies exist. they all have the same problem as 'they work on my computer' and also encourage this ecosystem of thousands of micropackages, which in a thread so focused on security seems a little ironic given there is no way to guarantee all of those dependencies are made by good actors without a lot of vetting that just is not happening.
Re:Criticizing Hare language approach for generic data struc... by duped on Wednesday May 04, 2022 @11:55AM (#31262214)
I've never had a "works on my machine" bug when dependencies are managed per project. The only time I have ever had them is with global/os-level dependencies. And I've used cargo/npm a lot in the last few years.
Re:Criticizing Hare language approach for generic data struc... by mumblemumble on Wednesday May 04, 2022 @12:23PM (#31262587)
I do agree on the micropackages.

What I keep daydreaming of is a package manager that resolves and download packages, but doesn't automatically grab transitive dependencies. I don't even want it saying, "Hey, we need to grab these 15 other ones, too, is that OK?" I don't want to hide the pain of huge dependency graphs like that; I want to feel it acutely. Give me an error message saying, "Oops I couldn't add FancyPackage because it depends on X, Y and Z transitive dependencies," and send me on a fetch quest. And I want the whole community around the language I'm working in to feel it acutely like that. That way we're all in the same boat, and collectively incentivized not to create the problem in the first place.

Re:Criticizing Hare language approach for generic data struc... by wheelerof4te on Wednesday May 04, 2022 @06:23PM (#31266640)
That is on the library developers to settle out. Keeping your library API stable requires the mind of a genious and discipline of a monk.

Now, keeping your language design stable and backward-compatible is a no brainer. Given that, it's possible to handle "dependency hells" simply by building from source.

Hare is designed to be ultra conservative, so you don't have to worry about dependency hells. Features are in code, not builtin into the language.

It is a win-win situation.

Re:Criticizing Hare language approach for generic data struc... by xigoi on Wednesday May 04, 2022 @09:00AM (#31259778)
That's a great way to make a program work only on specific distros.
Re:Criticizing Hare language approach for generic data struc... by capableweb on Wednesday May 04, 2022 @09:04AM (#31259818)
Seems it fits Hare perfectly then, as one of the explicit goals of Hare is to only support non-proprietary OSes.
Re:Criticizing Hare language approach for generic data struc... by mumblemumble on Wednesday May 04, 2022 @11:02AM (#31261464)
I'd guess it does the opposite?

If I'm writing for a proprietary OS, that's probably Windows or OS X. Both of which give me a more stable target to aim at when it comes to what dependencies I can expect.

If I'm writing for an open source OS, that's probably some flavor of Linux. But which flavor? And which package manager does it use? And do they support all the dependencies I need, in the versions I need? Without pulling non-standard package repositories into the mix?

When open source software has difficulty working on proprietary OSes, I think it's usually not because of the package manager. More often it's because of something like a glibc dependency. At which point the domain of support isn't really "open source OSes", it's usually something more like "glibc-based linux distributions."

Re:Criticizing Hare language approach for generic data struc... by xigoi on Wednesday May 04, 2022 @09:10AM (#31259885)
How is being free related to having a specific package in the package manager?
Re:Criticizing Hare language approach for generic data struc... by Koshkin on Wednesday May 04, 2022 @09:10AM (#31259879)
Why? Proprietary OS have package managers.
Re:Criticizing Hare language approach for generic data struc... by Koshkin on Wednesday May 04, 2022 @09:13AM (#31259910)
How so?
Re:Criticizing Hare language approach for generic data struc... by xigoi on Wednesday May 04, 2022 @09:19AM (#31259975)
Because you can't guarantee that every distro's package manager will have the packages you need.
Re:Criticizing Hare language approach for generic data struc... by wheelerof4te on Wednesday May 04, 2022 @06:27PM (#31266671)
Build them from source, then.

Hare is a systems programming language. What kind of a systems programmer doesn't know how to build from source?

Re:Criticizing Hare language approach for generic data struc... by bccdee on Thursday May 05, 2022 @01:18AM (#31269799)
So the solution is just vendoring? Vendoring is very clunky—that's why we have package managers in the first place.
Re:Criticizing Hare language approach for generic data struc... by wheelerof4te on Thursday May 05, 2022 @04:31AM (#31270963)
Language designers have every right to avoid complex features if such a feature impede the language in any way.

Hare does the smart thing - it decouples the library distribution model from the language.

After all, it's the programmers job to make sure that distribution and packaging of his/her library is as simple as possible.

Re:Criticizing Hare language approach for generic data struc... by bccdee on Thursday May 05, 2022 @09:30AM (#31273061)
Every programmer should not be re-solving the problem of library distribution just to distribute their library. This is a solved problem; a go-style git repository model is the bare minimum that a language should have.
Re:Criticizing Hare language approach for generic data struc... by xigoi on Thursday May 05, 2022 @02:56AM (#31270409)
Having to download several dependencies from random websiees and install them is not the most fun way to spend an afternoon. Especially if half of them have cryptic build errors.
Re:Criticizing Hare language approach for generic data struc... by wheelerof4te on Thursday May 05, 2022 @04:16AM (#31270871)
So Github is a random website now?

I think that Hare's workflow and usecase encourages having very few or no dependencies.

That means, in most cases, you should just be able to download a project's source, build and use it right away.

Re:Criticizing Hare language approach for generic data struc... by CyberRabbi on Wednesday May 04, 2022 @04:05PM (#31265131)
Package dependency resolution is fundamentally impossible to do efficiently and often broken (for legacy reasons) in specific implementations. Programmers are terrible at semantic versioning. Community package repositories are security nightmares. Under those conditions not including a package manager seems like a reasonable decision.
Re:Criticizing Hare language approach for generic data struc... by ddevault on Wednesday May 04, 2022 @08:06AM (#31259335)
I question the assertion that Hare's standard library is "anemic"; it includes a pretty decent set of batteries for many use-cases:

https://docs.harelang.org

Many Hare programs will not need to have dependencies at all. We encourage a more conservative approach to dependencies than is common in many modern languages such as Cargo, PyPI, npm, Go, etc. Even dependency-heavy Hare projects will not have hundreds of dependencies, but maybe dozens at most. Think more C, not Node.

https://harelang.org/distributions/

Re:Criticizing Hare language approach for generic data struc... by nicoburns on Wednesday May 04, 2022 @08:51AM (#31259709)
That does look like a decent collection of functionality, but a HashMap as mentioned in the submission seems like a pretty glaring omission. I can't remember the last time I wrote a program that didn't use a Map. Even dynamic languages that tend to be quite light on types almost universally include a map type.

I can definitely see the problems with the Node "explosion of modules" approach, but if we're looking at fixing issues with C then IMO "everyone implementing their own data structures and not always with the care and attention they deserve" is right up there with things like lack of proper arrays/strings and poor null handling.

It seems like it ought to be possible to find a middle ground where dependencies are easy to find, install, update and integrate with a standardised build system, but where there is a cultural norm of being conscious of dependency size and not using micro-dependencies

Re:Criticizing Hare language approach for generic data struc... by ddevault on Wednesday May 04, 2022 @08:58AM (#31259761)
Take a look at this comment where I explained why a first-class hash map is not a good fit for Hare:

https://news.ycombinator.com/item?id=31258759