HomeVideos

Zig is at a crossroads

Now Playing

Zig is at a crossroads

Transcript

498 segments

0:00

You know, this is a little bit different

0:00

of a video at this point.

0:04

I hope you're ready for a bit of a

0:05

yapstorm today because we got something

0:07

that originally I just wasn't going to

0:09

talk about. You know, I just didn't want

0:10

to talk about it. I didn't want to take

0:12

your time. I just I just couldn't do it.

0:14

But it just has been eating at me and

0:16

it's just been building in me like some

0:18

sort of just yap geton that's going to

0:20

come out and now it's going to come out.

0:22

So, our story starts right here. Bun,

0:24

the beloved JavaScript command line

0:27

utility that's written in Zigg, very

0:29

popular programming language, dropped

0:31

this little tweet that said, "Hey, in

0:32

Bun's Zigg fork," and you're like,

0:34

"Well, wait, wait a second. Bun has

0:36

forked Zigg. Wait, what?" They made a

0:38

small change that apparently makes debug

0:40

building up to 4x faster, improving

0:43

internal development velocity. And then

0:45

they give this a nice example right here

0:46

where you can see a bunch of what

0:48

appears to be parallel builds all going

0:50

at the exact same time. Now, you're

0:52

probably thinking, "What the hell? What

0:54

what's the controversy? Is it because

0:56

bun

0:58

for to zigg? Is that is that what we're

0:59

talking about?" No, that's that's not

1:01

it. That's not it at all. For those that

1:04

don't know, Zigg is actually quite the

1:06

popular programming language. As you can

1:08

see right here, Mitchell Hashimoto,

1:09

writer of Ghosty, yes, Ghosty is also

1:12

written in Zigg, has some high praises

1:14

for the language. And the language

1:16

itself was actually written in uh late

1:18

2015 early 2016 with the description of

1:22

it being my goal is to create a new

1:24

programming language that is more

1:26

pragmatic than C. This is like trying to

1:28

be more evil than the devil himself. Not

1:30

my words. Kind of funny. A good way to

1:32

describe your language. You just wanted

1:34

a more pragmatic C. Also, that's evil.

1:36

That's evil to do. All right. So, before

1:38

we get into the controversy and honestly

1:40

my five conclusions that I'm going to

1:42

draw from this, yes, like I said, this

1:44

is a lot of yapping that's going to

1:45

happen today. First, the bag. Kamish,

1:48

you got to listen to me.

1:49

>> Oh, no. Not one more comment from you.

1:51

I'm done rebasing your mistakes. You're

1:52

on junior CSS duty until further notice.

1:55

>> Commish, you can't do this to me.

1:56

>> Keep talking and you'll be doing store

1:58

procedures for a month now. Get out of

2:00

here. Take him with you.

2:05

Fun fact, CSS is actually touring

2:08

complete.

2:20

>> Larry, Gary, Tango, Mary, I'm just

2:23

pulling your request. It looks good to

2:25

me. You're clear to ship.

2:27

>> Thanks.

2:27

>> You're welcome. Next.

2:30

It's an awfully big PR

2:32

>> for an intern.

2:33

>> Well, I just bumped some dependencies.

2:35

It's nothing major.

2:38

>> Hey, can I get a quick stamp on this?

2:41

>> Yeah, don't worry about it.

2:43

>> Quick approval.

2:44

>> Oh, not on my watch. I'm on your disc

2:47

like a peas on slur. Not this again.

2:50

It's literally just a hex code change.

2:52

Just to prove it. Just to prove it.

2:54

Squish. Perf resisting review. Oh, I

2:57

know you're the dippler. I've seen vibe

2:59

coding, but that ain't it.

3:00

>> MERGE COP. NO,

3:02

>> MERGE COP.

3:06

>> I hate merge cop. He always makes

3:08

reviewing take forever. We have code

3:10

rabbit. Oh, come on. I wasn't even

3:12

merging the prod. It was a hex code

3:14

change. We have code rabbit. We don't

3:16

need real people reviewing such simple

3:18

changes. Code rabbit can do it for us.

3:20

Our engineers time is better spent

3:22

solving problems for customers. You can

3:25

try it too at code rabbit.ai. Next week

3:28

on Merge Cop.

3:29

>> Now my plan to merge a dip so big.

3:32

You're the dipler and I always knew it.

3:38

>> Okay, so what is the actual controversy

3:41

that's going on here? By the way, I love

3:42

saying controversy ever since I saw some

3:45

BR LITTLE SPOT BRUSH say their funny

3:47

words. They're funny English words and

3:49

one of them was controversy. Now I just

3:51

love saying it that way. Anyways, so if

3:53

you look at the tweet and you go all the

3:54

way down to the third one, it says this.

3:56

We do not currently plan to upstream

3:58

this as Zig has a strict ban on LL

4:00

authored contributions. And if you go

4:02

over and you do check out the code of

4:04

conduct and the first thing you'll

4:06

notice is that right away there's an IRC

4:08

channel. Okay, little strange that

4:10

there's an IRC channel, a language in

4:12

the year 2026 is still organizing and

4:15

strategizing on IRC. It's really a true

4:18

I mean they are truly trying to be a

4:21

more pragmatic se absolutely

4:24

Chad behavior. And if you scroll down,

4:26

just a hint, you'll see right away

4:28

strict no LLM and no AI policy, no LLM

4:32

for issues, no LLMs for poll requests.

4:34

Now, of course, what does this mean? I

4:36

think this is a big point of contention.

4:38

Does that mean you cannot generate any

4:40

code by it? Uh, but anyways, or no LLMs

4:42

for comments on the bug tracker,

4:44

including translations. English is

4:46

encouraged, but not required. You are

4:48

welcome to post your own native language

4:50

and rely on others to have their own

4:51

translation tools of choice to interpret

4:54

your words. By the way, I'm just

4:56

throwing this out there. That just

4:57

sounds like a giant pain in the ass. I

4:59

mean,

5:02

I mean, LLMs are just generally pretty

5:05

dang good at at translating. It's just

5:07

like, "No, you use an LLM, not not me."

5:11

And of course, this led to exactly what

5:13

you would expect it to lead to. Well,

5:15

screw Zig. They won't last long blocking

5:18

LLMs. Zig is going to get left behind.

5:20

Like, what what do we What What is Zig

5:22

getting left behind even mean? Like

5:24

where's it? Where's it going to go? It

5:26

can't get left by. It's a language,

5:28

people. And of course, some people are

5:29

actually happy about this, bro. They're

5:31

competing with C, not JavaScript for

5:34

sake. Makes me want to learn Zigg

5:36

more. Anyways, classic Twitter

5:38

arguments. They're all just so focused

5:40

on the exact thing that is the problem

5:42

instead of actually looking at what is

5:44

the implications of all this. What is

5:47

actually going to happen? Because

5:48

there's actually quite a bit to think

5:50

about if you have this kind of

5:52

divergence that's starting to happen

5:53

because you do have anthropic. They can

5:56

literally spend infinity tokens using

5:59

claude mythos, the most dangerous model

6:02

ever created. It's so dangerous that

6:04

Daario has decided that you could never

6:06

even look at it. Like even just looking

6:08

at it is like looking into the eyes of

6:10

Medusa. You're going to be turned to

6:11

stone and immediately start hacking the

6:13

NSA. Okay, so let me get to effectively

6:15

my the many points that I have about

6:18

kind of this weirdness that we're about

6:20

to see. The first thing obviously is

6:22

like I want features faster. Zigg has

6:24

been in development for 10 years. It's

6:27

still not at a major version. It's still

6:29

unstable release after release in the

6:31

minor versions. Still break a whole

6:33

bunch of stuff and things change. So

6:36

yeah, I can see why people would like a

6:39

little bit more velocity. And I think a

6:40

lot of people these days when they look

6:42

at velocity in its most kind of

6:44

rudimentary sense, they look at an LLM.

6:46

They're like, "Dude, why would you write

6:48

code when you could just say it in

6:50

English, the Lord's programming

6:51

language?" But I kind of want to push

6:53

back against that a little bit. Like

6:54

even though I think I'd personally

6:56

benefit seeing Zigg in a more kind of

6:58

concrete uh stable position, in fact, I

7:00

would start using Zig again in a more

7:02

realistic fashion if that was the case.

7:04

Uh but I I do want to push back a little

7:06

bit in kind of that line of thinking. If

7:07

you just even look at one of their

7:08

latest features, their new Async kind of

7:10

release of how they're handling async,

7:12

it's really really well done and it took

7:16

multiple years to actually get into that

7:18

position. Now, is it a good thing that

7:20

they took so much time to get async

7:23

await effectively in Zigg? Well, some

7:25

people could say, hey, they should have

7:26

been able to do it faster, but the way

7:28

they did it was done so well that I

7:31

think it's actually okay that they took

7:33

that time. There is a bit of beauty in

7:35

slowing down and not trying to be the

7:37

first person done, but actually being

7:38

the person that does it the correct way.

7:40

A second, I think the big controversy

7:42

here is that Bun forked a Zigg and did

7:46

not call it ZG. I I genuinely, if you're

7:49

going to fork Zigg and you're going to

7:51

diverge and you do not call it ZG, it is

7:54

truly a crime against humanity. We

7:56

better have Zigg and ZG. Just say I mean

7:59

that's a more iconic D duo than BBop and

8:02

Rock Steady. I would be genuinely upset

8:05

if this does not happen. It really just

8:07

goes to show that Daario doesn't like

8:10

humor also apparently. Okay, I expect

8:12

it. I expect it next time or I'm judging

8:15

I'm judging anthropic heavily here.

8:17

Okay, but a more important question is

8:19

how do you even how do you enforce this

8:21

in all reality? How do you enforce this?

8:23

What happen if I'm a contributor and I

8:25

just start using a little bit of tab

8:27

autocomplete? Well, that my friends is

8:29

an LLM. you know, that right there could

8:31

be an LLM. And even though I'm hand

8:33

coding effectively most of it, I could

8:35

be using an LLM. How do you know that

8:38

I'm not using an LLM? I mean, I get it

8:40

that some people out there, they have

8:42

very magical and mystical prompts that

8:45

they like to put out there. And it's

8:47

very obvious when the slop canineer

8:49

comes in with his slop trebuche just

8:53

unloading code and being like, "What?

8:54

What?" Like, "What? Why? Why are you

8:56

upset? I just added 10,000 lines of

8:58

code. This is good. This is good for

9:00

you. You should love this, brother.

9:03

Nobody loves this. This This doesn't

9:05

even work. Okay, this whole thing,

9:07

virtually none of it actually works or

9:09

really changes anything. And so, this

9:11

does kind of lead to an interesting

9:12

point. If more people were to get in,

9:14

you know, kind of excited about Zigg. I

9:17

understand that they're building this

9:18

like mentality and this is totally okay,

9:21

right? You're totally okay saying, "Hey,

9:24

we want to create a culture where you

9:26

don't use LLMs." I think you should be

9:28

able to do that. I don't understand why

9:30

people get so angry at other people for

9:32

doing it and then they point to a

9:34

singular bug or a singular feature such

9:36

as this one right here. Uh this compile

9:39

at, you know, this super cool, hey, I'm

9:41

going to compile everything much much

9:42

faster. They look at this and they're

9:44

just like, oh yeah, screw this team. Oh,

9:47

they're going to die without just like,

9:48

well, first off, they got here by the

9:52

decisions they've made, so obviously

9:54

there must be some level of wisdom in

9:56

what they've done. Bun has enjoyed what

10:00

they've been building and doing and so

10:02

they're like, "Okay, actually no, no,

10:03

wait a second. This could be kind of

10:05

neat." And so it's kind of silly to that

10:07

these people just come out and just rag

10:09

so hard. Like you didn't build the

10:11

language. You don't know what it takes.

10:12

It took 10 years to get to where they

10:14

are today through very careful

10:16

decision-making. I don't know. But we're

10:18

entering into a weird world where things

10:20

like this, this little MIT license

10:22

that's currently on Zigg, maybe these

10:24

are some of the things that might change

10:25

at some point. Maybe this becomes less

10:28

and less of appealing kind of license to

10:31

have because this kind of behavior by

10:32

big companies with billions of dollars

10:35

and infinite tokens are going to try to

10:37

give you a run for whatever kind of

10:40

creative stuff that you've done. And it

10:42

also just feels really weird because

10:43

Andrew has spent the last 10 years

10:47

building this product on a pretty like

10:49

meager salary. If you look into some of

10:51

his blog posts over here, you can see

10:53

right here he says like, "Why am I

10:54

donating $150 a month or 10% of my

10:57

income to this library?" And it just

11:00

feels weird. Like there is just

11:01

something kind of weird about a big

11:03

corporation stepping in saying, "Hey, we

11:05

don't like how you guys do it, so we're

11:06

going to do it our way." But also,

11:08

that's MIT license. Like that's that's

11:10

why you don't use it if you don't want

11:12

that to happen because it's fully within

11:14

the big corporation's right to do that.

11:16

Like that's the whole point of this

11:19

license. There's also just something I

11:20

don't like about anthropic. Okay, I I

11:22

just haven't liked them. They just seem

11:24

so adversarial to engineers. They just

11:26

seem so adversarial to pretty much

11:28

everybody that's not anthropic. They

11:31

have their own little internal circle

11:32

jerk where they're just like, "The AI is

11:34

absolutely alive. We are absolutely

11:36

shephering into the future. This is the

11:38

most dangerous thing ever. It's probably

11:39

going to kill everybody. Also, we're

11:40

going to create and make trillions of

11:42

dollars because we're the only people

11:43

that are safe." They're just like the

11:44

weirdest group of people. And so for

11:46

some odd reason, when I see them make a

11:48

fork of an MIT project, it just somehow

11:52

feels greasier. And I don't really know

11:54

how to say it because it is MIT at the

11:56

end of the day, but but at the same

11:58

time, it just it somehow feels like

12:00

they're stealing. And I'm not really

12:01

sure how to express that other than I

12:04

just don't like it. It doesn't it

12:06

doesn't feel good. Something feels wrong

12:09

about it. And yes, currently it's just a

12:11

simple single feature kind of fork. So

12:13

maybe that's all it ever ends up being.

12:15

And then it's just like, okay, whatever.

12:18

It was just a simple single fork. Or

12:20

maybe they continue to keep on doing it

12:22

and then at some point it has to become

12:24

a hard fork once you add enough

12:25

features. I don't know. There's just

12:27

something that bothers me, but I don't

12:29

really know why. I can't really put my

12:32

finger on it. And that's part of the

12:34

reason why I wasn't going to make this

12:35

video because I don't really have like a

12:37

concrete takeaway other than yeah, I

12:39

don't like it. I don't really like how

12:41

Anthropic deals with the public and how

12:43

they think of software engineers and it

12:45

just bothers me more that they're

12:46

forking MIT Goodwill projects. It just

12:50

bothers me. A lot of questions. Hey, I'm

12:52

just saying lots of weird questions.

12:54

We've never really been in this kind of

12:55

area before and I don't really know what

12:57

to make of it. If you got an answer for

13:00

me, you got to let me know. Okay. Also,

13:02

I know that was just a lot of yapping.

13:04

Okay. This was a lot of yapping. I just

13:06

I just felt like I had a bunch of things

13:08

to say cuz this last year has just been

13:10

so weird in software development and

13:13

this kind of problem has started to kind

13:15

of poke up multiple times now. I don't

13:17

even know what to make of it. The name

13:20

is the sloppen. All right, so it turns

13:22

out that after I recorded this video

13:23

that Zigg did actually respond and gave

13:26

their thoughts which are super

13:27

compelling and I'm traveling so I'm

13:30

going to record the end of this video

13:31

from my hotel bed. Wow. All right, so

13:34

the response from Zigg is actually

13:36

really amazing. And so it starts off

13:38

with AI is entirely besides the point

13:40

here. The changes in this Zigg fork are

13:42

not desirable to upstream for several

13:44

reasons. So it turns out that parallel

13:46

semantic analysis has actually been uh

13:49

as an issue and they've been kind of

13:51

thinking about it for quite some time

13:53

now and they already have a mostly

13:55

working version of this exact same

13:58

thing. Now this is what they say about

13:59

it. The rewritten type resolution

14:01

semantics were designed to avoid these

14:03

issues. These issues being that if you

14:06

do parallel semantic analysis, sometimes

14:08

depending on the order of types, you can

14:11

actually get errors that should not

14:13

exist if everything was parsed

14:14

correctly. But Bun's Zigg fork does not

14:17

incorporate the changes and has not

14:19

otherwise solved the design problems,

14:20

which means their parallelized semantic

14:22

analysis implementation will exhibit

14:25

non-deterministic behavior. That's

14:26

pretty much a non-starter for most

14:28

serious developers. You don't want your

14:30

compilation to randomly fail with

14:31

nonsense error 30% of the time. And I

14:33

think we all pretty much agree to that.

14:35

That would be wild. I'm not even exactly

14:37

sure. There's no amount of compilation

14:39

speed up that I would take in which

14:41

exhibit some sort of nondeterminism. I

14:43

guess I mean to be fair if I could

14:46

compile it in a half of a second versus

14:48

1 hour, then yeah, obviously I'd rather

14:50

roll the dice three times to make sure

14:52

it actually compiles. But okay, besides

14:53

the point. To put it more simply, we are

14:56

going to make these change enhancements,

14:57

but hacking them in for a flashy

14:59

headline isn't a good outcome for our

15:01

users. Instead, we're approaching the

15:02

problem with the care it deserves, so

15:04

that when we ultimately ship it, we

15:07

don't cause regressions. Now, again,

15:10

this is what I've been talking about

15:11

with Zigg. This is why Zigg has remained

15:14

such a good language is that every

15:16

single time there's a problem, they

15:18

think about it and they approach it and

15:20

they take great care to do the right

15:23

thing every time. It's truly impressive

15:27

what they have built so far. So, I'm

15:29

completely not surprised that when you

15:30

just simply throw something through

15:32

Claudia and Claudia is just like, "Dude,

15:34

that's such a good question. You're so

15:36

insightful and these ideas you have are

15:39

brand new. My gosh, you should tweet

15:41

about it. You should fork Zigg that this

15:44

kind of stuff ends up happening. And

15:46

then guess what? It just turns out that

15:48

perhaps the implementation wasn't

15:50

correct, at least based on what I'm

15:51

reading from Zigg. But more importantly,

15:53

he actually goes in here and kind of

15:54

disproves the entire point of this,

15:56

which is I think even more impressive.

15:58

So instead of just having this

15:59

parallelized semantic analysis, he's

16:01

like, "Okay, no, no, no. You're focusing

16:03

on the wrong problem." Which is like a

16:05

huge classic. often when people try to

16:07

make something faster or better or more

16:11

well-ritten they think about it from

16:12

such a like myopic perspective and so in

16:15

this case it's just like oh well the

16:16

problem is is that we're just not

16:18

analyzing everything in parallel that's

16:20

really where the bottleneck is and then

16:22

comes in here and says no no no that's

16:23

not what I'm saying what I'm saying the

16:25

true bottleneck is is the LLVM now we

16:28

have an experimental our own kind of

16:30

custom backend that means we can produce

16:33

stuff at the same rate 4x faster And we

16:36

also have incremental builds as well,

16:39

which means that we can actually produce

16:41

it orders of magnitude faster. We can go

16:44

from 40 second build times down to a

16:47

half second. And that's completely

16:49

different than what's going on with just

16:51

the Zig fork. It is the wellthought

16:54

through and wellared for good

16:56

engineering that it takes to build a

16:58

good product. This is what good products

17:00

look like. And once again, I'm genuinely

17:03

impressed with Zik. And I think there's

17:05

a good takeaway here. I do think you can

17:07

move super duper ultra lickety split

17:10

with an LLM. And perhaps this was like a

17:12

good thing to go spike out and say,

17:13

"Hey, if we can accomplish incremental

17:16

or parallel semantic analysis, we should

17:19

be able to run about 4x faster." And

17:22

then instead of having this big flashy

17:24

headline like we can't even commit it

17:27

back because of LLM policies, instead

17:30

perhaps they could have worked with the

17:31

team. Perhaps they could have done a

17:33

little bit of digging cuz apparently

17:34

this is already available on Mac OS and

17:36

I think Linux. So maybe we could have

17:40

just looked at it a little bit more

17:42

instead of just making these gigantic

17:44

headlines.

Interactive Summary

The video details a controversy surrounding Bun, a JavaScript utility, and the Zig programming language. Bun announced a fork of Zig that sped up debug builds by 4x but stated they wouldn't upstream the changes due to Zig's strict ban on LLM-authored contributions. The speaker initially discusses the public's mixed reactions, the challenge of enforcing an LLM ban, and the ethical implications of large corporations forking open-source projects under an MIT license. Later, an update reveals Zig's official response: the core reason for not accepting Bun's changes was not the LLM policy, but that Bun's implementation of parallel semantic analysis introduced non-deterministic behavior. Zig also clarified that they are developing their own robust solution for build speed, focusing on optimizing the LLVM backend and implementing incremental builds, which will offer significantly greater improvements without compromising stability, reflecting Zig's philosophy of careful and well-engineered development.

Suggested questions

5 ready-made prompts