Always be wary of Google "open-source" projects, they only care about their specific usecases.
@redark74 күн бұрын
That’s a pretty big flaw. Shares libraries are key to interact between different programs, if only one can be present, it is a disaster. The loading of the DLL should handle repeated symbols.
@anthonywritescode4 күн бұрын
yeah kind of the point of shared libraries is the they can be shared. sad really
@autistadolinux53364 күн бұрын
Rob Pike hates shared libraries (.SOs, .DLLs) since Plan 9 days (like 1990s - early 2000s) as this becomes quite hard to port and make packages for unix systems and, at least on his part, it should changed by static libs or a service running as process. The thing is that this works when you are in a Plan 9 environment, because the whole filesystem is the part of a "exposed api" for the process as everything lives inside its own private namespace and you can mount and unmount services as a normal user, so you can make things secure and encapsulated and you see this theme quite a lot in Plan 9, one example: even the sockets are not exposed as kernel API but as a service mounted as a file server in /net, so you can literally make a listen socket in shell script and then pass that to a program/service you want to host on. But we are not in a Plan 9 environment (unfortunately). They are still trying to push Plan 9 even to this day, or at least the ideas, in Go.
@kRySt4LGaMeR4 күн бұрын
funniest part is that as most perf hacks, it might not even be the substantial enough to even justify its existence. many times engineers want to check-in code to improve performance but refuse to profile it.
@andrecarvalho11284 күн бұрын
The mantra of "never break user space" comes to mind. Even if it's unintended behaviour, if there's stuff depending on it, you don't break it.
@greyshopleskin23154 күн бұрын
The days of good software engineering practices are dead. This is what we get now. Broken software that breaks ours, and JS
@jimstanley_492 күн бұрын
That reminds of an anecdote from, I think, The Unix Hater's Handbook? (I read this an eternity ago. It might even be referencing the mantra.) Back in the "wild west" days of Unix, some basic program like cp or mv was written and shared. A couple of days later, the programmer found a more efficient method, or a massive performance boost, or something like that. It wasn't implemented, or became an option instead of default because as default if would change something in the API and he already had 5 users depending on the original behaviour.
@wexwexexort4 күн бұрын
you must delete em, for the sake of the title. archiving is not enough.
@dawidp7494 күн бұрын
Exactly, what a clickbait
@Mallchad4 күн бұрын
I mean it's a git project... Deleting a git project doesn't mean anything in 99% of cases because they will always be backed up somewhere, as per the design of git.
@JohnZakaria4 күн бұрын
So you want him to break other people's build? Do left pad all again? Nah man
@Eltaurus3 күн бұрын
@@JohnZakaria or, you know, just select a less clickbaity title
@MurtagBY2 күн бұрын
why?
@ivolol4 күн бұрын
Didn't python recently formally 'isolate' its interpreter state so you can run two separately at the same time? So like, the opposite direction of this problem?
@anthonywritescode4 күн бұрын
indeedy!
@DavidDellsperger4 күн бұрын
Go has always been somewhat strange to me with their emphasis on the git repository as effectively part of the distribution mechanism, etc.
@user-kt0jl90sfwj8cb2 күн бұрын
That's not the worst part. The worst thing is their requirement to create special files or directories in your repository in order to work with version 2 and higher tags (e.g., v2.0.1).
@shoe34 күн бұрын
I don't think they understand how damaging this is to the longevity of Go. There's a lot to criticize about Perl, but it has survived and will continue to survive because of how seriously they took backwards compatibility.
@rosomak82444 күн бұрын
Yeah. They tried perl 6. None cared and they are stuck where they where. Meanwhile none cares about perl. That's call.
@centerfield6339Күн бұрын
Didn't Perl change so completely they had to rename the language?
@mbunkusКүн бұрын
@@centerfield6339 What you're probably thinking of is the language that started out as being "the next major version of Perl, Perl 6". Turned out they wanted to do so many & so different things that, while still looking a lot like the classic Perl we all know, it really wasn't anymore. Simultaneously a lot of other folks expressed interest in continuing to maintain & slowly evolve the classic Perl (Perl 5.x.y) in the well-known backwards compatible way. The result is that both camps amicably decided to go different ways. The new language was therefore no longer called Perl or Perl 6, but something new: Raku. There's an interpreter for it called Rakudo (there also was Parrot, but that's been discontinued). So nowadays when we talk about Perl, we mean the classic Perl 5.x.y variant. Both projects are very much alive & well.
@KasasagiWad34 күн бұрын
the performance hit of multiple non-global thread handlers and garbage collectors may be a legitimate reason to only allow a single shared object, but if multiple shared objects is unintended behavior it's undeniably a bug on all other platforms where this still works, and they really should open an issue so that this misuse can be prevented.
@tompov2274 күн бұрын
I always felt that Go was trying to be a better C but all it did was move around what was inconvenient about C. Like some things that were awful in C were nice in Go, but so many things that were fine in C are just agonizing in Go. I really do not like it as a language.
@MakeKasprzak4 күн бұрын
Thats so extremely odd. I can't be sure, but this may mean something like a pair of VST audio plugins written in Go would also break (assuming VSTs can be recompiled, and dont just get run in Wine). Huh.
@jtw-r4 күн бұрын
Oh interesting… you’ve got my attention. Do you happen to know of any VSTs off the top of your head that are built using go? I have an intel mac and a couple DAWs I could test this on.
@duke6054 күн бұрын
Came into this video thinking "Another dev with skill issues going to shit on Go" but... ya that's a problem :/
@anthonywritescode4 күн бұрын
arguably this is the opposite of a skill issue lmao
@duke6054 күн бұрын
@@anthonywritescode indubitably. Quite the skill needed to find the issue
@MrAlanCristhian4 күн бұрын
@@anthonywritescode Sorry for the off-topic, but I have a question. Each subinterpreter has his own garbage collector? It is possible to call gc.collect() in one subinterpreter without pausing the others?
@isodoublet3 күн бұрын
Aren't skill issues the entire motivation for go's existence?
@muhammedadel96734 күн бұрын
It is sad to see CGO devolve from one of their selling points to being the ostracized child that most language veterans tell you not to approach but maybe this a good time to try zig i guess?
@user729744 күн бұрын
Go found it's niche. Small, static binaries often used as CLIs or in containerized environments. Nothing wrong with that. Just like there's nothing wrong with other languages to appeal to other use cases being developed, like Zig.
@muhammedadel96734 күн бұрын
@@user72974 By all means that's what i use it for, but we all want our favorite languages to do everything don't we?
@SumitSingh-yo5qg3 күн бұрын
If possible, in your next videos I would like to see what you're working on sentry these days :D
@rednafi4 күн бұрын
Go just isn't great if you need to use shared libraries or do FFIs. But at the same time, it's the fastest language that's this easy to write, so they had to make a choice. I love Python, but I wouldn't want Go to turn into Python, where ergonomics and features trump everything else. Go tries to strike a different balance, where you gain quite a bit of performance by giving up a few niceties. I feel like the maintainers made the right choice here.
@anthonywritescode4 күн бұрын
why even provide build-shared at all if it can't be shared
@TheBypasser4 күн бұрын
C is very easy to write, and I doubt there is anything that beats threaded SSE-oriented C code in performance ;) On MCUs I'd say Assembly, but on PCs say, MSVC compiles a decent code that is really tough to outmatch manually.
@zhamed95873 күн бұрын
There are languages other than golang and python :) Java and C# are both superior for example
@Zandman263 күн бұрын
Go is a lot better on threads than both C# and Java (have written both for over 10 years).
@zhamed95873 күн бұрын
@@Zandman26 golang doesn't have system threads. Java has virtual threads now, which are better than golang's, because they also offer structured concurrency
@hansdietrich14964 күн бұрын
Oh boy. I also had my share of discussions with a bunch of idiots, explaining them that some of their softwares misbehaviour is a bug and should not be redefined as feature. I feel you!
@austinraney4 күн бұрын
To be fair this was (is?) a problem in python also. You cannot embed multiple python interpreters in the same process. While this isn’t great, there are work arounds like subprocessing with proxy objects that are kind of awful in themselves, but it is doable. Go is not trying to be a traditional compiled language that enables every use case and I kind of love that about it. I love your content, but this seems like a little bit of an overreaction IMO. Can’t win the all!
@anthonywritescode4 күн бұрын
works fine with sub interpreters. if you're going to make build-shared it should at least be and to "shared" no?
@zhamed95874 күн бұрын
You can't spell "goof up" without go.
@evanfreethy2574Күн бұрын
The Go community just lost one of the good ones
@RoamingAdhocrat4 күн бұрын
point of order: thumbnail should feature a stop sign
@jakesurrett351821 сағат бұрын
Zig >> Go
@royler88482 күн бұрын
I'm shocked, great video
@ericng88074 күн бұрын
unsubbed, unfollowed, leaving the discord, unfriending from pokemongo
@RoamingAdhocrat4 күн бұрын
PokemongoDB
@ongeri4 күн бұрын
PokeMariaDB
@boboshermusurmonov9784 күн бұрын
So basically, Go just got it's own version of GIL bottleneck ))
@anthonywritescode4 күн бұрын
global wacky mutable state
@adamconnor18983 күн бұрын
Well, so much for using Go with python. Aren't people increasingly using Rust for that? Of course, it sucks if underlying libraries of interest only exist in Go.
@anthonywritescode3 күн бұрын
yeah rust has been super nice for embedding
@nometutentegiapreso4 күн бұрын
asottile taking inspiration from filosottile, lol
@lifelover694 күн бұрын
i don't understand, can you elabore more please?
@nometutentegiapreso4 күн бұрын
@@lifelover69 The author of the article mentioned at 1:30 is known as "filosottile" on GitHub and Twitch, and Anthony is known as "asottile" on GitHub 🙂
@nometutentegiapreso4 күн бұрын
@@lifelover69the author of the article mentioned at 1:30 is known as "filosottile" on GitHub and Twitch, whereas Anthony is known as "asottile" on GitHub 🙂
@SuperFakeMinecraftChannel4 күн бұрын
@@lifelover69 1:30
@MelroyvandenBerg4 күн бұрын
owhno! I love go quite a lot for some of my small projects. Low memory usage and efficient code.
@MelroyvandenBerg4 күн бұрын
They do say: "We can review patches to make these cases work better, but we can't promise to fix them ourselves."
@alexeiboukirev83574 күн бұрын
I guess Go, having a complex runtime, is not a language to write Python extensions in. It works very well in other scenarios, and there is no reason to abandon it altogether. But you are you and choose your own path. Good luck.
@mrswats4 күн бұрын
This looks kind of dumb, tbh.
@AceofSpades57574 күн бұрын
Come back to Rust. Rust will always love you.
@PouriyaJamshidi4 күн бұрын
Start using Nim instead :P
@mamamikazala4 күн бұрын
That's what I'm tempted to do tbh. I'd like to learn an additional language besides Python, but I don't have much time so I'd like to make a wise choice. Do you use Nim? If you do, how do you like it? I hear it's not that hard to learn if someone knows Python.
@byte__30764 күн бұрын
@@mamamikazala It's a nice language, not that difficult to learn if you come from Python, though it was inspired by other languages mostly. The metaprogramming system is nice and it it also easy to develop extensions for Python. Also there are (not plenty but enough) resources to learn it such as the official tutorial/documentation, nim by example, rosetta code, some youtube playlist, etc. Only downside I can think of is that there are not a lot of libraries tough you can start building many projects already (you have good library for CLIs, RestAPI)
@PouriyaJamshidi3 күн бұрын
@@mamamikazala I do use Nim both personally and at work. It is a fantastic language and I highly recommend it. Very easy to write, read and maintain. It is also easy to learn if you already know Python but it gets a little bit of getting used to since it is a typed language.
@ac130kz4 күн бұрын
Go was made for web services, I don't get why the hell people keep using it for mission critical software, such as Docker, or tooling
@anthonywritescode4 күн бұрын
? what. it was created to make systems tools
@ac130kz4 күн бұрын
@anthonywritescode I don't get it from its featureset. Easy "green" threading model, json integration out of the box, built-in http server, gc-first memory allocation, fast compilation and stuff. To my mind it feels very much rapid iteration web development oriented
@roccociccone5974 күн бұрын
It's an issue sure, but your use case seems a little contrived for Go. Who the hell uses Go to make Python modules. Just use C at this point.
@spectrapulse21044 күн бұрын
Have you ever written a parser in C?
@anthonywritescode4 күн бұрын
then why does build-shared exist
@Mallchad4 күн бұрын
@@spectrapulse2104 Yes. I would indeed. like to write a new string library for every project
@isodoublet3 күн бұрын
Go is truly a uniquely terrible project
@SR-ti6jj3 күн бұрын
It's just so mid
@Requiem1005004 күн бұрын
python dev detected, opinion rejected just kidding, it's actually a valid reason, I would be mad as well
@alejandroioio67844 күн бұрын
All those languages were stillborn, Go, Rust, etc... they don't provide anything really substantial to change.
@ac130kz4 күн бұрын
yet you can write any FFI you want with Rust...
@coosisv62314 күн бұрын
@@ac130kz Rust can do ffi for c easily, but the other way around is more buggy. Since it doesn't use headers you have to use some sort of tool(cbindgen) to generate header files for you, and a lot of times it just doesn't work without manually tweaking a bit
@alejandroioio67844 күн бұрын
@@ac130kz If you are going to call functions in other languages from rust, why use rust then?
@ac130kz4 күн бұрын
@coosisv6231 well, even C++ bizarre quirks, when working with it from C, it's not like Rust is alone in this regards. At least they don't scrap it like Go's devs did
@ac130kz4 күн бұрын
@alejandroioio6784 wdym? If you have a huge industry standard library written in C, for example, you surely won't start rewriting that instead. And if you mean writing in raw C, oh, yeah, that's gonna create a lot of the same problems that led to development of Rust in the first place