“Safety” as defined in the context of the Rust language - the absence of Undefined Behavior - is important 100% of the time. Without it, you are not writing programs in the language you think you are using.
That’s a convoluted way to say that UB is much, much worse than you think. A C program with UB is not a C program, but something else.
mmm, no, that's an explicitly incomplete list of informally-described observable behaviors that qualify as undefined -- which is fine and good! but quite far from a specification!
Andrew wrote ONE SENTENCE and that's enough for you to diagnose him? That's enough for you to identify a pattern of behavior? Really?
He's "polishing a pig"? He's hiding "all issues" with Zig in internal mailing lists to "project a polished facade"? ALL?! You got all that from one sentence saying he wishes the author took a different approach?
Alright, fine. Here's my analysis of your character and lifelong patterns of behavior based on your first two sentences:
You just want to tear down everybody who is trying to do good work if they make any mistake at all. You look for any imperfection in others because criticizing people is the only approximation of joy in your existence. You are the guy that leaves Google reviews of local restaurants where you just critique the attractiveness of the women who work there. You see yourself as totally justified and blameless for your anti-social behavior no matter the circumstances, and you actually relish the idea of someone being hurt by you because that's all the impact you could hope for.
If that's not accurate to who you are, well, ¯\_(ツ)_/¯ that's just how it reads to me.
The internal communication channels are where the people who can fix the problem are looking. They aren't looking at random blogs until it's too late to actually have a meaningful and calm discussion with the person raising the issue.
If the author had raised the issue on the actual channels that the Zig project requests people use, and then the Zig team had been dismissive or rude, then, yeah, for sure go writing blog posts. I'm not sure why this is such a hard thing to grasp. If you have an issue, raise it with the people who can fix the issue first. Don't immediately go screaming from the roof-tops. That behaviour is entitled, immature, insincere and unproductive.
You seem to be reading a lot into my replies that isn't there. I'm not sure why you're so offended. At no point have either of us actually addressed the grievances of the blog post's author. That's one of the many reasons they weren't the best option. It's like you feel I'm attacking your right to complain about things. I'm not. Complain away, it's healthy, but there are better ways to communicate with the people who can actually address the problem.
Intermernet said, "Posting critical blog posts [...] is counter-productive."
You said, "anybody [...] can write whatever they want". "They are under zero obligation ...". "Members of the Zig project are free to reach out ..."
Do you not realize that you have not at all addressed the point about what is the most productive way to criticize?
All you have done is go off about people's rights, freedoms, and lack of obligations. But nobody actually said "People shouldn't be able to post critical blog posts" or "People are obligated to participate by filing issues or contributing code to open source". So what was the point in saying this? Do you think people believe anything contrary to what you said?
The parent quite literally made a normative statement and I disagreed with it:
> Collaborating would be contacting the Zig team through one of the many channels available and asking questions, offering suggestions etc.
If nothing else, this is attempting to define what counts as valid collaboration, and it's a definition I reject, so I disagreed with it. Good-faith experience reports are valid, useful, pro-social collaboration. Doing so is a perfectly productive way to criticize.
> So what was the point in saying this? Do you think people believe anything contrary to what you said?
Apparently they do. The parent even made a veiled accusation that the author writing a good-faith blog post on their own blog about their own experiences "can even be seen as self promotion". Since when is sharing your good-faith critique about the design of a tool you've used something underhanded or nefarious?
Setting the bounds of valid community collaboration to "people can post on their own blog as long as I like it otherwise they're being mean" is not a set of values I subscribe to, so I felt it was worth it to articulate that.
Andrew may be expressing frustration or dismay or annoyance in that statement, but he is not definitively "painting them as bad actors trying to sabotage the language". You are HEAVILY reading into his statement.
He only said he wishes the author would have taken a different approach. So what? Why does everyone have to jump in and start psychologizing or essentializing Andrew based on one paragraph?
Why does one paragraph have to say so much about who he is as a person? Even if it did piss him off for a few hours, so what? He's not allowed to wish someone took a different approach?
I tend to think Andrew Kelley is a great guy, not just technically but as a person. And I think that because I've listened to him talk for dozens of hours. I can guarantee you that that one sentence he wrote is not the beginning of a character assassination campaign against the author of this blog.
He made Zig because he wanted to put something good into the world and improve the state of software. How about we include that in our analysis of Andrew's character? I'll leave it to the reader to consider whether the multi-year full time dedication to Zig should be weighed more heavily than a personal feeling he had for two minutes that he expressed respectfully without attacking anyone's character.
From his "Open Letter to Everyone I've Butted Heads With":
> My friend - it's not personal. I care about you. I actually do value your opinion. I'm interested in your thoughts and feelings. I want to make you happy. I'm sad that I can't serve you better with my open source project. I want to. I wish I could.
> I'm hustling. I'm playing the game. I'm doing what it takes to make this thing mainstream and a viable, practical choice for individuals and companies. If you talk shit about Zig in public, I'm going to fight back. But I respect you. I see you. I understand you. I don't hate you. I would literally buy you a drink.
I would be interested in more examples where "assembly is faster than intrinsics". I.e., when the compiler screws up. I generally write Zig code with the expectation of a specific sequence of instructions being emitted, and I usually get it via the high level wrappers in std.simd + a few llvm intrinsics. If those fail I'll use inline assembly to force a particular instruction. On extremely rare occasions I'll rely on auto-vectorization, if it's good and I want it to fall back on scalar on less sophisticated CPU targets (although sometimes it's the compiler that lacks sophistication). Aside from the glaring holes in the VPTERNLOG finder, I feel that instruction selection is generally good enough that I can get whatever I want.
The bigger issue is instruction ordering and register allocation. On code where the compiler effectively has to lower serially-dependent small snippets independently, I think the compiler does a great job. However, when it comes to massive amounts of open code I'm shocked at how silly the decisions are that the compiler makes. I see super trivial optimizations available at a glance. Things like spilling x and y to memory, just so it can read them both in to do an AND, and spill it again. Constant re-use is unfortunately super easy to break: Often just changing the type in the IR makes it look different to the compiler. It also seems unable to merge partially poisoned (undefined) constants with other constants that are the same in all the defined portions. Even when you write the code in such a way where you use the same constant twice to get around the issue, it will give you two separate constants instead.
I hope we can fix these sorts of things in compilers. This is just my experience. Let me know if I left anything out.
Personally, I would like compilers to better exploit vectorization, which can get you 2x to 10x faster on random things within typical workloads, rather than worry about dubious optimizations that have performance improvements that may or may not be caused by changing the alignment of code and data blocks.
I would like to see more effort dedicated to basic one liners that show up in real code like counting how many of a given character are in a string. E.g. `for (str) |e| count += e == '%'`. For this, LLVM spits out a loop that wants to do horizontal addition every iteration on x86-64 targets with vectors, at least. Let's focus on issues that can easily net a 2x performance gain before going after that 1-2% that people think pointer aliasing gets you.
Pointer aliasing information is often crucial for vectorization. So in that sense TB is a big boost for vectorization.
Also, note that the paper discussed here is about the model / language specification that defines the envelope of what the compiler is allowed to optimize. Actually getting the compiler to optimize concrete real-world cases is an entirely separate line of work, and needs completely different expertise -- expertise me and my group do not have. We can only lay the framework for compiler wizards to have fun with. :)
Pointer aliasing is necessary for auto vectorization, because you can't perform SIMD if the data you're modifying overlaps with the data you're reading and since the compiler is only allowed to modify the code in a way that is legal for all inputs, it will be conservative and refuse to vectorize your code rather than break it in situations with pointer aliasing.
Maybe this was a too convoluted way of saying this:
Loading something from main memory into a register creates a locally cached copy. This mini cache needs to be invalidated whenever a pointer can potentially write to the location in main memory that this copy is caching. In other words, you need cache synchronization down to the register level, including micro architectural registers that are implementation details of the processor in question. Rather than do that, if you can prove that you are the exclusive owner of a region in memory, you know that your copy is the most up to date version and you know when it gets updated or not. This means you are free to copy the main memory into your vector register and do anything you want, including scalar pointer writes to main memory, since you know they are unrelated and will not invalidate your vector registers.
How is the 30% tax different than other platforms?
Further, how much do you think should this be (20%? 10%? 5%?) and if zero, why?
Finally, do you believe Apple should be compensated for the services and marketplace that they are offering, if so, what other strategies do you recommend that they deploy to make everyone happy?
> How is the 30% tax different than other platforms?
Because it doesn't have to compete with third-party distributors like MacOS? The App Store on MacOS is almost entirely empty, every real developer abandoned it years ago. It's almost impossible to buy professional Mac software on the App Store, because real developers like Avid or Adobe or Affinity don't think Apple's deal is fair either.
> Finally, do you believe Apple should be compensated for the services and marketplace that they are offering
They already are, through their developer fees. If Apple can't compensate themselves without forcing people to use their services, then they need to redesign their business model.
Installing software is not a service, arguably Apple has no right to demand compensation for it in the first place.
>Because it doesn't have to compete with third-party distributors like MacOS?
Who are the third party distributors for the playstation or xbox?
>They already are, through their developer fees.
It's $100/developer. Considering Microsoft used to charge thousands for Visual Studio, it doesn't seem too unreasonable to claim that $100/year is too low.
>If Apple can't compensate themselves without forcing people to use their services, then they need to redesign their business model.
What's wrong with royalty fee based business models?
>Installing software is not a service, arguably Apple has no right to demand compensation for it in the first place.
Right, which is why Apple characterizes the fee as "core technology fee", ie. for access to its tools and SDKs, not for access to the store.
Nintendo Switch has fully distributed homebrew stores too.
> It's $100/developer.
They can charge more if they don't think they're milking developers enough. They only have, what, a few million of them worldwide.
> What's wrong with royalty fee based business models?
Nothing, if they are forced to compete with other royalty-based services that set a fair baseline price. Otherwise everything is wrong with it. MacOS did this right, although admittedly the App Store didn't quite survive the gauntlet of competition.
Imagine if your favorite band could only make money by signing to a single record label. Do you think their talent would be valued fairly? Do you think they would be respected for who they are, or do you think their likeness would be molested in whichever way was the most profitable for the label?
If that counts as "sideloading", you might as well count the free 7 day signing option that iOS offers (used by alt store) "sideloading".
>Nintendo Switch has fully distributed homebrew stores too.
Officially?
>Nothing, if they are forced to compete with other royalty-based services that set a fair baseline price.
See my previous comments. Apple's claim is that the fee isn't for distribution, it's for access to the SDKs. It's unclear how "if they are forced to compete with other royalty-based services that set a fair baseline price" would work in this case. Epic offers Unreal Engine for free, with the expectation that they'll recoup the money via royalties. That sounds like a lot like Apple's SDKs.
>Imagine if your favorite band could only make money by signing to a single record label.
That's what happens for most bands though? There's typically a exclusivity period, and some artists might stick with a given label their entire lives.
> Who are the third party distributors for the playstation or xbox?
This is a whataboutism. People can discuss Apple's anti-competitive business policies separately from Sony's and Microsoft's. (Does it matter that Playstation and Xbox ecosystems are potentially similarly anti-competitive? That just means the circumstances around their policies should also be scrutinized for the same reasons.)
> it doesn't seem too unreasonable to claim that $100/year is too low
It doesn't seem too unreasonable to tell them tough shit. They can improve their business model themselves; that's their responsibility. It is also their responsibility to avoid anti-competitive business practices.
> What's wrong with royalty fee based business models?
This is a disingenuous question in reply to the pull quote you included from the parent comment. They wrote "without forcing people to use their services". That is the primary anti-competitive thing that people complain about with Apple.
Amazon charges 15% for physical media, including software [1]. Since Apple is not shipping physical media, it seems something less than 15% would be more reasonable.
App store software should have minimal warehousing and shipping costs compared with physical software. I was just trying to come up with a ball-park comparable figure.
Of course I think Apple should be compensated for their services. But the idea that software businesses should have to pay 30% of their income to Apple is insanity. How are they meaningfully contributing to every sale? Should I have to pay 30% of my income to my landlord? Should online retail businesses have to pay 30% to UPS or FedEx? Software distribution is the lowest-cost distribution business imaginable. I'm not saying bandwidth is free, but if it would make more economic sense for Fortnite to ship you a USB drive with their software on it rather than go through the App store, then there might be some extortion going on.
Why can't Apple set whatever pricing they want? Unless you're arguing that Apple has a monopoly.
Also it's not a tax, though arguably it can be termed an "economic rent" (a technical term) that can be considered excessive, but I'm not sure about that.
Apple can't do whatever they want. They are subject to consumers through market choices and through government legislation. When one company has a monopoly, e.g. when almost every kid at school has an iPhone, that company needs to be regulated so that the interests of the public are not completely sacrificed to protect one company's personal interests. Just because they made the iPhone doesn't mean they are entitled to dictate everything digital to every iPhone user. They still have to play ball with the rest of society and can't deploy anti-competitive practices, they still can't dictate what rights their users have, and consumers need protections from their decisions as well as the decisions of others. I think the idea that market forces should be the only thing that gets companies to stop doing wrong is missing the fact that choices are removed as things centralize, that no man is an island, and that companies who sell you a product that locks you into a service doesn't make them your Lord.
And regulating Apple is quite different from regulating someperson. If you made a Linux phone in your basement, nobody would tell you what kind of charger you should use. But companies that claim ownership of a substantial economy and can dictate the rights and culture and economic output for a large section of society do need to have more checks on their power than just, "Well if I'm so wrong, then why do I have so much money? Maybe you should make your own phone that won't work well with anyone else's and see if you can sell it."
Same reason any company can't set whatever they want. Vast majority of companies aren't deemed monopolies so this doesn't apply to them but this restriction holds over them once they grow to a certain size nonetheless. Even the most ardent capitalists/free market advocates agree that monopolies have to be regulated by the government.
The real questions are what makes company a monopoly. You can always argue you aren't a monopoly but it's what convinces people that makes most sense and many people are beginning to be convinced that Apple/Google etc are monopolies in certain markets.
I don't see an answer to the question you quoted in your post?
It sounds like you are implying that a monopoly classification would somehow be relevant to fee/pricing strategy?
The reality is that every company that has a hardware/software ecosystem has some form of AppStore. Sony, Nintendo, Valve, etc. Should we consider them all to be monopolies of their store? For fun, let's say they all are.
In order for that monopoly classification to have some impact, it would have to be used in an anti competitive way.
Let's say Nintendo wants 20%, Valve wants 30%, and Sony wants 40% of an apps sales price. You adjust your price for each platform, the software costs more on Steam Deck and PlayStation. Are Valve and Sony using their stores in an anti competitive way by charging more than Nintendo? I don't see how. It is not anti competitive for Sony to charge developers more.
An example of something anti competitive would be Sony telling you that you can only put things up in their shop if it's exclusive to Sony.
This is a misunderstanding of free market advocacy. The status quo for mobile apps is not a free market. Free markets are defined by meaningful choice. If there are undue restrictions on switching providers for any service -- it doesn't matter whether the restrictions come from the government or from private companies -- it's not a free market.
> Unless you're arguing that Apple has a monopoly.
Exactly this. There's no competition, because Apple blocks iPhone owners from installing apps through any method other than their App Store (in the US, where this lawsuit is being filed). It's a programmatically-enforced monopoly.
Frankly I'd much rather change that situation than quibble about exactly how much Apple is allowed to charge for their services. Let them charge whatever they want in a free market where they have to compete on a level playing field with everyone else. If developers don't like it, they can use a competing app store to sell their software to iPhone users.
I don’t think any developer considers it reasonable. I mean, apart from apple and the really brainless section of their fanboys, who thinks this is reasonable?