#MINTIA (not vibecoded)
1 messages · Page 34 of 1
What bochs supports heavily depends on what config options are used
I recommend building from source
Bochs is also amazing for USB debugging
I’m not sure wtf was going on when I built it from source then?
Did you tick all the options
My os fully works on it, never had any problems
Must have been a severe skill issue then 
Or just that one commit on master had issues when I tried it?
a bit interesting opinion on vad structs from reactos chat
i was looking at timers code and noticed that https://github.com/xrarch/mintia2/blob/4cdd2e9a0af52062117f2a5d54c6cf09c3260f35/OS/Executive/Ke/KeTimer.jkl#L201 doesnt indicate success ?
pairing heap seems like a good choice for timers
in windows, timers are organized into linked lists in timer tables
and it uses bitmaps to find pending hands
apparently, the windows approach is based on the timing wheels paper https://www.cs.columbia.edu/~nahum/w6998/papers/sosp87-timing-wheels.pdf (1987)
Deletion is slow though
i remember you criticized nt's object manager namespace
have you seen any comments from the nt people regarding its design and implementation
mintia's name was on a slide in the ceo's presentation at a major silicon valley startup's all hands meeting today
(under my name on the list of new hires and their backgrounds)
congratulations
congrats!!!!!!!
i hope mintia 2 doesnt stagnate now that will has a real j*b
its Mintia© 2®™ now 💔
minta/2
limntia/2
no
it's MintAI now
fully vibe coded neocapitalist NT-tech operating system that will revolutionize low level bit concurrencies
get the vibecoded crypto concurrency $MINTAI RIGHT NOW!
Congrats that's pretty cool
Is your job related to osdev/sysdev?
what about it?
Ya firmware
as per @twilit smelt the problem is name caching which is centralized in unix likes
in nt object namspace each fs driver operates with its own cache
for example, a path like devices\harddisk0\partition0\ could exist and any part of the path string after that is passed to be parsed to the fs layer
I don't think it's really that big of a deal.
Congrats
You've successfully overcome challenges in the past, and there's no reason to think it will be any different now.
i think mintia2 implements a separate namespace tree subsystem which provides an explicit representation of the namespace as a tree
I haven't touched OB in a long time (actually, that's not entirely true, given the recent RCU changes... but I definitely haven't thought much about namespace caches in a long time). I think the problem with having a central cache that includes the sub-namespaces (e.g., within filesystems) is that there are semantic issues that would create inter-dependencies that would limit the flexibility of the implementations. Character set rules, symbolic links, hard links, compound files (e.g. NTFS streams) would have to be understood by the global caching system. And I don't think that is really necessary.
As long as sub-namespaces are self-contained (i.e., not allowed to reference backwards into the containing namespace), then having namespace lookups be two-step (locate the target namespace and then call into that namespaces implementation to resolve the rest of the pathname) should work just fine.
In kernels the second part should just be a function call (though NT does complicate things with its IRP-based IO system).
Hard/soft links and use of the namespace to implement a security hierarchy (i.e., protecting files by securing parts of the namespace) create additional complexity (and subtle vulnerabilities). Plus the optimization of relative pathnames creates some more issues (i.e., when you hold a handle on part of the namespace and access relative to that point).
And generally trees are (probably) a bad idea and don't promote much flexibility in searching (thus the cross links). You have to get the cache invalidation to work securely and efficiently if changes in the sub-namespace are to be correctly reflected back into the global name cache.
Please don't make life to osdevvers shit by writing broken fw 🙏
Don't become what you swore to destroy
write very quirky firmware
the kind that requires extensive debugging to figure out why it doesnt work in some random edge case
No, just write correct firmware that breaks the operating systems that assume too much
Sleep(1000000)
https://devblogs.microsoft.com/oldnewthing/20150814-00/?p=91811:
Originally, there was no
TerminateThreadfunction. The original designers felt strongly that no such function should exist because there was no safe way to terminate a thread, and there’s no point having a function that cannot be called safely. But people screamed that they needed theTerminateThreadfunction, even though it wasn’t safe, so the operating system designers caved and added the function because people demanded it. Of course, those people who insisted that they neededTerminateThreadnow regret having been given it.
is there any truth to this?
iirc, the headers from NT 3.1 build 196 declare it
i've checked proc.doc before, and its revision history doesn't seem to mention adding NtTerminateThread(). (the NtTerminateThread() system service was defined in that document.)
checking ke.doc now
why do i keep reading this paper
that hyperlink just leads to raymond's blog post on the allocation granularity: https://devblogs.microsoft.com/oldnewthing/20031008-00/?p=42223
will implement? yeah he usually does that
do you think the way how its done in nt is a better way?
It's just a matter of opinion that it's not that bad and worth changing.
Yeah, I still feel bad about my tussle with @twilit smelt on that whole thing. I wasn't being clear enough about the situation and it caused a misunderstanding. Although I am still a little ticked that Raymond's blog wasn't on point. Maybe it's common, but I always thought his anecdotal stories were beyond reproach.
To be clear I don't mean the allocation unit size (or the effects), just the history behind the choice.
There is another view. Is the idea of using namespaces to organize storage a good one?
Human beings find pathnames useful, but it is potentially much more efficient to identify stores by tuples of persistent GUIDs <namespace, file, version>. Mapping names to files is due to the historic file cabinet abstraction for organizing data, but this abstraction implies key hierarchies and secondary indices to aid in searching which limits the flexibility.
Even the web has evolved away from the file cabinet model. Search is done by search which resolves into links which can then be captured and used rather than re-running the search. But a lot of work is required to make this work, especially in the old system.
that might be more efficient but isnt it very limiting
it's like taking a file system and removing the "file" part
now it's just a binary blob database
One other note about namespaces and semantics. The NTOS OB was more like /dev than anything else. There is also a separate namespace for the registry which had lots of other semantics and features which led to lots of complexity due to abuse and failure to consider the information lifecycle of the contents.
It was supposed to provide a configuration database, but really just became a cautionary tale about how ingenious people can be at using wrenches as hammers and screwdrivers as chisels.
this has been spoken about for a long time but doesn't seem to have arrived on desktops
and mobiles are providing a thin and leaky veneer over the hierarchical filesystem
Plan 9 contributed some interesting ideas in this area. But I don't know that anybody has worked this out completely.
The organic evolution of the web and search probably provides much better insight into how data should be organized and managed.
what is mintia's plan with the split cache model of "buffer + page cache" for block devices when it comes to what it will do when the write hits metadata? is the whole write stopped and rejected?
i'm planning out that strategy and am running into a predicament with pages that are partially metadata and partially data that are mmap'd in
i'm thinking either full denial of the write or a shadow page would be what I'd do (with the latter, the fault into the write would cause that page to be seen as partially metadata, resulting in a new page with the same data being created, and the write going there, and that data being filtered out into the real page), though idk
The buffers are backed by pages of the page cache
And the read logic is exactly that of the page cache
The only difference is that if you access a page through a metadata buffer and dirty the metadata buffer, the underlying page will be written out block-wise by a special buffer writer instead of page-wise
Or perhaps they'll share a writer which will generalize
Dunno
what's the plan for running into a partially metadata page through an mmap write though? does it simply use the different write-back machinery, i.e. any page containing a metadata buffer uses different machinery to write-back?
oh wait that's kind of interesting 🤔
the other concern i had with this strategy was with filesystems that vary in metadata and data extents like btrfs
i was considering some kind of global interval tree for the whole FS but that seems like it could make unhappy scalability
Well this can't happen because file data pages are virtual and only contain file data blocks
what about the block device page cache
Coherency is usually not guaranteed when directly accessing a block device that is also mounted as a filesystem
It could be accomplished here though by causing writes to mapped block device pages to cause all the contained buffers to be dirtied rather than the page in the page cache
But this still doesn't obtain coherency with file data
Which again is not usually offered anyway
ohh ok, I thought the split cache model was about not corrupting metadata through the block device page cache, and that things like altering file pages through the block device would cause the relevant files to invalidate those pages
so it's more about having a private buffer cache that just holds the filesystem metadata, and maintaining coherence between that and the various file page caches?
It's about fixing aliasing problems where file pages and metadata pages can contain some of the same physical sectors
The buffer cache provides a per sector (or block) structure to track each metadata block
So that modified metadata blocks will only write back those sectors to the disk and not also write back other sectors that lie within the same page but belong to files
mintia2 no longer belongs to me it has been purchased from me for $10,000,000 by a company who wants to use parts of it for their router firmware.
goodbye all osdevers
did you forget to take your meds again
no grandpa, it's not the 90s
ok wait the router firmware thing is oddly specific
is there a chance this is like half-real
tfw the larp becomes reality
theres a universe where he signed a contract saying all of his work (even outside of work) belongs to the company or some shit like that without thinking about it
It's funny because I almost did do that
I had to list mintia as my pre existing IP when I signed my offer letter otherwise it would transfer ownership to the company
If I didn't read it I wouldn't have known that
I fucking knew it
these corporate bastards are just waiting for you to drop the soap at every turn
you should trademark mintia
like actually
together with xr station
afaik it's a startup so it's probably not super corpo yet
There are no walls just a lot of people under a roof in rows in what is essentially a very large room
This is standard language for offer letters apparently
thats fairly common
open space stuff
yeah its supposed to make everyone feel like a team or whatever
Cool thing about a job is that there's no homework on the weekends unless you want there to be or you are being specially depended upon for a specific highly time sensitive thing which usually doesn't happen to interns
Which means i should be able to work a bit on mintia
That's good, because I remember having to work on the weekends to finish my internship project.
maybe thatll come later
idk you say that
ah yeah i guess its mostly "unless you want to be there"
what kind of task did they give you
do you work on it alone or in team
Hopefully make NT 2
Microsoft is already working on NT 10...
I don't think id ever take a dev job where there's "homework on the weekend"
will, generate nt 2 make no mistakes
NT 2, now with better numa support
was there never an nt 2? did they go straight to 3?
in the us? or like in general
it started at 3.1 to be in sync with dos windows' current version number at the time
NT never would have released with a 1.0 version number because the original plan was for it to release as "OS/2 3.0"
I don't know
I was just surprised so i looked it up and it said that's in basically every offer letter you'll ever sign in tech
A page where you have to list your pre existing IP and anything you don't list transfers ownership to the company
what country
Might not be legal for them to claim all your pre existing IP like that
i would imagine, yes
It is in the US
that feels dumb
it would make sense if you could implicitly grant a license to do anything with it, but not actually transfer ownership
but i guess its the us lol
Offer letters here are like "we own all facets of your entire existence mind and soul that have ever existed that you do not explicitly list in the box below, excepting things already owned by previous businesses you worked for. Along with your mind and soul we also own your body starting on the day of employment until the last day of employment. Anything new you begin to do during that time is also ours. Please sign below if you don't want to be unemployable forever:"
I could work on mintia without them owning it bc it's my pre existing IP i listed
As long as I don't do so during work hours or using work computers
If i started a new thing though they might have a claim to it, regardless of when or how i worked on it
you often see random projects with 'Copyright such-and-such Google, inc.' in their licence headers these days on account of this being a normal practice in america
huh
i guess makes sense
in britain and ireland, and i assume europe and probably the rest of the world, it's unheard of
random example i know about https://github.com/jmmv/sysupgrade/blob/master/COPYING a little script for netbsd is owned by google because the netbsd-contributor author worked for them in those days
apparantly google has a procedure to assign the copyright to you according to this
wow that all sounds horrible
you listed all of your projects right
like
not just "mintia" and nothing else
Some countries straight up make it illegal to give up copyright so
i would write down every xr station buzzword on that paper
like
maybe they dont have mintia but they have xr station new sdk now
its different to give it up vs sell it
Maybe yeah
What kinda internship did you get pitust
You're probably a really good candidate so I'm not surprised you got one lol
I did write it down
its a company called arista
they sell switches mostly
i wrote "XR/station project and all subprojects thereof including a3x, a4x, mintia, mintia2, aisix, newsdk, ..."
Or something
well no bc im a first year uni student lol
that automatically makes me a worse candidate
but not worse enough ig
IOI is overpowered on resume
If you position well on IOI it's like guaranteed entry into MIT
unironically
tbf all the IOI winners have rich parents or are extremely cracked
i dont think so?
tourist is in the latter category
all the ioi winners are chinese
(this is only half true)
great
yeah poland did badly last year tho iirc
I checked the winners of my province and they're all asian
@twilit smelt was there a clause about work you do while under the contract
they dont automatically own everything you do while working there right
who is tourist?
look it up
a person who goes from their country
to another country
to visit it
and have fun
ah
Gennady Korotkevich (Belarusian: Генадзь Караткевіч, Hienadź Karatkievič, Russian: Геннадий Короткевич; born 25 September 1994) is a Belarusian competitive sport programmer who has won major international competitions since the age of 11, as well as numerous national competitions. Widely regarded as the gr...
Him
theres this hyperactive fly that wont get out of the way of the fucking screen and it's making me go insane
That is crazy talent
Sounds like hell
And an extremely shitty practice
There's no limit to the greed
i instinctively reached my hand out at the perfect time and smeared it across the screen
good riddance
They do
It's not even indicative of special greed it's just completely and utterly standard here
Mintia is not new
So i could work on it outside work hours on personal devices without them owning it
But anything i start would be theirs
It's a form of intellectual slavery or imprisonment kind of
But it's not special to this company
It's just standard in America which is a corporatocracy
this is like vaguely reasonable tbh
you could argue it's a form of anti compete
but it's not
i think it would be a huuuge reach to classify it as that
this is super idiotic
what the fuck are they thinking
does the US not respect human dignity
(don't answer that)
the argument is that its to make sure that if you work for a company and you have some genius idea during work hours, you cant just leave and take it somewhere else
i think
thats bullshit
why does it matter if i think of it during work hours or outside of them
this isnt the military
yeah why would that be reasonable
i dont sell my body and brain
it's not
well if you are paid to come up with genius ideas...
lol
nobody at google is paid to come up with genius ideas
ehh
Location: America
Checks out lmao
thats not really true though
they just bought most of the genius ideas
a normal anti-compete would be much better than "i own your brain"
google is actually the origin of a bunch of good ideas
i was mostly referring to the fact that the executives come up with the good ideas and the engineers implement them
this is not really how it works btw
and the people experimenting on company time i guess
like at all
A famous example of the "they own everything you do" clause is when Steve Wozniak designed his first homebrew computer kit he had to show it to his bosses at HP at the time and they basically said "who would ever want a computer in their home? No we're not interested" and they released the copyright to him (per their policy) and it went on to be the Apple I i believe lol
google does this differently?
this is not how software engineering works at all???
i guess the executives just sleep on the job and rake in all the cash then
literally
executives in really big companies dont even have that much power in practice
bc its very hard to get a big company to do what you want it to
okay i guess i need to learn more about bigtech and how it works
this isnt big tech only
it depends on how the company is set up
if the company is privately owned (like valve, or openai, or anthropic) it's much easier
not really?
publicly traded companies like google are beholden to shareholders
private companies are only beholden to their own interests
is that right?
theoretically
obvious counterexample
spacex is not beholden to the shareholders at all
spacex literally just issued their IPO like yesterday
and also elon still owns like most of the shares
(which is why people claim he's the first trillionaire)
even if you bought every share not owned by elon youd only have 20% of the voting power
and you arent allowed to sue
is this favoritism or what
no
thats not usually how it goes
yeah i know thats part of why the whole spacex ipo is bs
does this work for projects created using your personal hardware
anyway with most of the big tech companies, original founders have a controlling share
and its this way in all american corps?
Prob
this is cancer
That's just part of employment here
.
see historical example of this
If HP didn't have a policy of releasing copyright for their employees personal projects upon meeting with them about it and deciding they didn't care, then there would be no Apple
IP you come up with while you are employed being owned by the company is not just a thing in the usa btw
that one is reasonable enough
yeah
we say "in the course of employment" or words to that effect
wouldn't that have made Wozniak more free to release the Apple 1?
clearly he wanted to release it
so if there wasn't HP as a roadblock then he would've done it right away
The policy of releasing copyright upon deciding they didn't care about an employee's side project is an extra thing they were doing
If they had no such policy then they would have hoarded the copyright
And he would have had no way to sell it commercially without them
And they wouldn't have sold it
Bc they didn't care
So
Would have just died
are you sure?
where else is it a thing?
everywhere i think?
it seems a not unreasonable rule to me if you write a program while at work then it's the employers
while at work, yes
it's when this applies to your work at home that it becomes outrageous
i don't disagree
exactly
but pitust didn't mention anything about "work performed on company time"
the americans however have this silly rule for some reason
it makes no sense
but note a dangerous implication of an argument that some free software advocates make about the GPL, that any exposure to it means you can't write software of a similar class
we can infer from the case with american firms "your code is ours" rule that the GPL claim must be excessive, because if so, american firms would effectively be traps that, once you work for them, you can never again work on a similar class of software at any other firm, since you knew about the first firm's proprietary work
me when im skimming youtube comments on a video and theres a comment from 2 hours ago where someone says "Windows is not portable."
im a seasoned youtube comment arguer
this smells
luckily I'll never work in the US
of course if you attribute all your IP to a company in your control, that makes it very hard for them to take it
it's just normalised there
i think they only have something like 2 weeks holiday a year as well
there is no law saying how much you are entitled to iirc
and people are expected to just not take holiday anyway or be contacted on holiday
Wait where did you get a job at? And what do you do lol
from what I've read and heard US at will employment is a cess pool
and they say European employment law is communism
it's daft
This is only partially true since VCs exist and other investors
For example openAI still has a bunch of private investors, and it would be in their favor to please them
its funny how here the list of reasons that you can fire someone is a blacklist rather than a whitelist
that is to say, there are banned reasons to fire someone
but if its for any reason outside that list its fine
for example if you fire them bc they are a specific skin color or gender or sexuality thats illegal
but if you say its because they looked at you funny thats completely legal
so you can just say that instead
the person would have to sue and find like written or recorded evidence that you had some kind of like racist prejudice against them or something to prove that u most likely fired them for that rather than for looking at them funny (which is a legal reason to fire someone)
which costs a LOT of money
and has low odds of success
its so funny how many self proclaimed libertarians here call the government bloated and say corporations are over-regulated and whatever
do we live in the same country
when "fire at will" becomes "fire will"
no pls
mr. will mint
come to my office please
we have to talk about your recent performance
there arent even offices
they don't need a reason do they?
that's why it sucks
best to not give a reason for redundancy because if you do it may be one of the forbidden reasons
it does
it really does
you could theoretically take it to court if you suspect that they fired you for a forbidden reason but just say "no reason", but it's expensive and risky
in the UK you can't just fire someone just because, and in some EU countries it's even harder. I hear also in Japan it's basically impossible legally to fire someone unless they've broken the law so they sideways reshuffle them into boring positions to make them voluntarily quit
That's some crazy laws over there in the US WTF
I think that's not even legal in germany
i hope he listed $MINTIACOIN as his pre existing IP
imagine pulling a pump and dump
and your company takes the profits
I would deserve it
@twilit smelt i am formally requesting cat pics
which cat
Which cat
∀x(Cat(x) -> Picture(x))
what orange one
i used to have the exact same fountain
mintia mascot
the platonic ideal of mintia2 that exists in my mind is the most advanced hobby kernel and that should be good enough. i refuse to build it im a sophisticated being far beyond trivialities like tangible existence. thank you all for respecting me in this matter
my samsung ssd
shat itself
and i almost shat myself with it
it wouldnt respond to any write commands and could not mount at all
had to use debugfs to pull whatever data i could salvage and now im on a fresh arch install
you're not a hyena that lives in the sky...
maybe the hyena in the sky is thier spirit animal
The hyena in the sky is the alternative hatman I see when I not just take 50 Benadryl, but also haven't slept in 3 days
Don't question why there's a sky inside
it's very ironic that it wasn't depression, injury or death that ended this project
but a simple j*b
it's not ended
I just haven't had time to work on it because I'm also behind in my 1 summer class and in my free time I'm too busy stressing about that while still not doing it to work on mintia
The latest atrocity of the tech right: they have entombed the SJWs under the streets of San Jose
every single character in my project's source is a manual keystroke or a copypaste of my own other code
which was manual keystrokes
this will sound insane to those who have only known vibecoding one day
even if it would genuinely improve my productivity to use it i kind of just dont want to just to be able to keep saying that forever
I will open a pr with code all written using dip switches. Lets see how the keyboard warriors will handle knowing its not all keystrokes anymore
dramatic much lol
I don't think human made code is going away in our lifetimes
I also think we are going to get to a point where saying "I refuse to use any generative AI, ever" would actually sound like "I refuse to use keyboards"
not next week, but in 5 to 10 years
it's a tool in the toolbox, like a compiler or a linter and to be principled and never ever use it will become very niche, kind of a hot take, once the companies who made it stop shoving it down our throats
absolutely not
we've never had a comparable technology
we did. the internet
stackoverflow
the closest comparison I can think of is "I refuse to use machines for the entire process of making my pots, I prefer to make them by hand on a turntable"
I'm more confident than an LLM that I'm right on this...
i mean stackoverflow basically did what AI is doing rn
and pottery is a hobby, and a respectable one at that
yeah, this sounds right
- cant solve problem
- copy paste from mystery source that may or may not be right for your use case
- you dont understand shit and your codebase barely worsk
kinda but also not really
well yeah AI is doing it better
StackOverflow doesn't really give shitty coders the feeling that they can do whatever they want
There are plenty of questions unanswered on SO
but once the fuss dies down and a few people lose significant money in the AI space, it will settle into one of those things everyone uses for a few tasks. writing your own boilerplate code would be seen as antique and kinda dumb when there's a tool that does it, ya know? like expecting someone to hand roll an entire program in asm instead of a high level language.
We had a tool for that already, it's called using IDE templates
Or github examples
AI bros like to pretend that boilerplate code is more than what it actually is
yeah, there's a lot of wrong assumptions right now like:
- AI will replace developers
- AI can't make good code
both wrong.
it can't replace developers because to make good code with it is a complicated iterative process with a competent developer in the loop, think of it like pair programming
except that sooner or later llm's gonna cost a bunch
thats just analogous to "your issue has been marked as duplicate and closed"
yup, and then nobody will pay, and that's when it's crunch time, you'll find people self hosting it instead.
they'll either optimise their models and become affordable or go bust
look at that Chinese one for example
which the tech bros said was impossible
thousands of times more efficient to train than openAI
while the money is flowing, they have to incentive to optimise
honestly i never really write programs with basically any amount of boilerplate so i dont think AI will ever help me
in my most recent codebase there are like 2 places where it wouldve helped
and theyre basic functions i wrote in seconds
you don't? here's someone who's never worked on a big commercial project then I guess
thats actually true
that explains it then
i only do little hobby projects for myself (ig you could call my game commercial)
im not gonna pretend that AI wont be useful for others
it just doesnt help me in any way currently
but i know exactly how i would use it if i were to work with a big and unyielding codebase
out of all places I use AI at work most now. I wasn't told to, haven't been given tokens or anything, it isn't mandatory. I chose to and use my personal gpt account. it makes boilerplate for me and helps resolve simple cards faster. but I don't deliver the project faster. I use the extra time to polish what I make and add more tests, refactor old stuff,.etc. it gives me more time to make stuff nice.
so rather than "this change will take 4 hours" the change is done in an hour and then 3 hours of system improvement
but that's also the advantage of small business procedures and not some huge corporation with 6 layers of management, a QA team, project managers and Jira.
sounds like a good place
I'm given the leeway to produce as I see fit as senior dev
thats pretty cool
it is, pretty chill place
the only downside if you aren't that way inclined is, it's all php and js
mostly laravel
but i love php 
i always wondered if AI gives better output in web dev tasks
like
that shit is ABUNDANT
yeah it probably does
and relatively simple
like all tasks, it can be good and other times it can be shit
ooh also i did use AI one time in the past few months
when i was writing the mandelbrot set test for mintia
i was doing bit math
to get every even bit into one int
and every odd bit into another
i realized it was tedious
so i had AI do it
that helped because i was already short on time and didnt want it to take multiple days
when I do use it I find the spec I give it has to be absolute, and you have to continually drum in don't repeat yourself, don't get cute with style and "optimisation", readable code is king
if it's readable you can review, understand and iterate
the main thing I use it for though outside of work is docs
it's really good at docs
honestly i cant feel right in a codebase if i dont know every single edge case and how every part of the design interacts with the others
so i would not feel comfortable making AI do anything other than "hey, this is a function. this is the inputs, this is the outputs. go do it"
paste in C code... "add doxygen comments to this header", boom, hours of work saved
is it good in generating docs for code that has little comments?
cuz i thought that would be a good use case
to make it explain the general design of a project
and the file system structure
so i dont have to read it
like it's just boring work that nobody wants to do anyways
yes so long as you give the implementation too and perhaps explain the edge cases of why the code does it the way it does up front, the ai can't know why you chose a specific approach
it's also good for translation, one of my projects is translated to like 10 languages via an automated script that burns gpt tokens
but that's a one off script I run every so often because it's relatively expensive (about £3 per run)
I mean it is translating hundreds of thousands of words of prose
tbh for that project I just wing it and run on user feedback
but it's far superior to Google translate
also why the fuck does arch linux have zip and unzip as different packages?? and they have different maintainers too
lmao, check that it's not been hacked considering what happened to aur 😭
hmm i dont think it is
i think theyre literally just two different projects judging by the urls
I don't think I'd ever try arch
based on my past expriences with gentoo and the freebsd ports tree i dont think it would be my cup of tea
Not interested in arguing with this goofy opinion I've heard 500 times before
im interested in hearing your opinion on it
because it's not an instantly indefensible position
It obviously is though
i dont really see it
it is very expensive (or about to be, at least)
but that would just put it in the same category as like a paid IDE subscription or something
Well Nadia said Claude was just vim sooo 
who is nadia
A person who vibecoded their entire os (200k lines) and said that vibecoding was just a vim alternative
I understand how someone can hold the "LLMs are just another tool in the toolbox! this is like being anti compiler!" opinion but only if they're being incredibly short sighted and refusing to think about it for longer than 5 seconds
if we're going off of definitions
you could say that a tool helps you do something
it doesnt do it for you
why do you think it's so absurd though
i think LLMs have more in common with compilers than vim
i bet you could train a neural network on huge C codebases and their binary outputs to make a weird AI "compiler"
they can already do that
not on like, the entire linux kernel but
simple programs they can transpile to machine code directly
Luddite!!! Already replaced ngmi etc etc etc etc etc
swe extinction event 18 months code monkey obsolete prompt engineer was the new plumber ai slop flood 10,000x efficiency bloodbath white collar massacre senior dev coping "i'll just learn prompting" too late agent swarm devours entire sprints autonomous codebase rewrite overnight mcp replace ceo cto cfo in one cycle google deepmind meta openai xai anthropic all racing to 10^6x inference scale datacenter cities glowing 24/7 sucking the entire grid dry energy armageddon power rationing for humans while gpus feast
the one thing I don't get is people who're like
"coding is solved. we dont need programmers anymore"
like
wut
well if you don't care about code quality and maintainablity and just results, you can do that
the main thing that agents can't do today is write "clean" / maintainable code
if you just care about time to demo, LLMs are great
it will certainly persist and i dare say it will become the educational standard
everyone is taught arithmetic the traditional way at school regardless of the fact that they will go on to use an electronic calculator later
exactly
i was very surprised when i first heard that in some countries people are allowed to use calculators in exams and stuff
LLMs will replace some programming tasks, like calculators replaced some mental arithmetic. but you must still have the base understanding of the concept to be able to succeed
this is why 100% vibe coded projects often fail
ask an LLM to convert between two programming languages for example, or refactor code. and i dont mean agents
depends on the question, in our exams some questions require a calculator others forbid it, generally not in the same paper
or at least thats how it was when i sat GCSE maths in the 90s
i find it odd that a question would require lots of mental arithmetic tbh
like
thats just the throwaway "lets get this over with" part after youve already done the work
my cat always wants treats
he'll meow in front of my door
and when i open it
he runs past me
into the kitchen
waiting for a treat
the no lsp lifestyle
Little silly person
lsp is just one tiny guy in your computer giving you suggestions
As opposed to a large, smart person
Yeah that one doesn't nitpick your code because he's the bigger man
this reminded me that
for like the past however many years ive been programming
ive just been rawdogging vim
with no lsp
lsp:
Mintia is being renamed copperclad
Bomboclat
help pls i ordered my XR/Phone by paying 0.12 $MINTCOINs ($6000+ dollars)
and when it arrived
and i opened the box
it was a pile of dog shit
i think there has been a mix up
do i mail this back or should i donate it to an animal shelter
@twilit smelt do you prefer an incremental approach to lexical analysis
or tokenizing an entire file first
and then operating on it
the common frontend, used by all the different newsdk tools that need lexical analysis, does the incremental approach
but that approach is the main thing that makes the hygenic macro system work
since the preprocessor/lexer is live while semantic analysis is happening, macro instantiations can create their own scopes
my jackal frontend does preprocessing/lexing all at once, but it has to insert some special marker tokens in order to accomodate the macro scope stuff
i do this because its useful to be able to re-trace the token buffer for nice error messages (particularly involving the preprocessor) and the like
it is nicer imo
especially if you can crunch your tokens down to be super thin
i got each token in coyote to be 8 bytes
8 bytes?????
howw
thats line + column info
token type info
token data (lexed number constants etc.)
all in 8 bytes??
you dont need line and column info
how come
you can just reconstruct that when you need it
you only need it during error messages
what about generating debug data?
still trivial to generate if you need it later
the point is that you don't need it for most of the compilation pipeline, so you shouldn't keep it around for most of the compilation pipeline
typedef struct {
// token kind
u64 kind : 7;
// was this token "generated" by the preprocessor?
// this means that the span might not correspond to source text.
u64 generated : 1;
// textual content
u64 len : 8;
i64 raw : 48; // pointer trick! only the first 48 bits of a pointer are significant
} Token;
static_assert(sizeof(Token) == 8);
technically you dont even need the token length but whatever i think its useful to keep around anyway
you also don't need to keep a token's computed data, like a numeric token's value
that can just be computed in semantic analysis, right when its needed, you can just generate it and put it right into your AST or whatever
how does this handle large strings
jackal doesn't allow tokens over a certain length so it isn't a problem in coyote, but there are several ways to go about it
ig you could just have C style string merging ("AAA" "BBB" = "AAABBB")
and just split it up to multiple string tokens
the way that i would do it, and the way that the zig compiler does it, is to just not store the token length
most of the time its redundant information
Who's the man with the sandwich
most of the time you only need a token's length in a single place in semantic analysis, and you can write a function to trivially recompute the length based on the token kind and the index/pointer in to the source text
for most token types actually, the length is static
for example, for the keyword int, you always know tokens with kind TOK_KEYWORD_INT will have length 3
and so on
i dont like that we need to do redundant operations here tbh
wdym redundant? you don't need to compute a token's value in the lexer
yes but you still need to iterate over it to validate it
you just have to scan it according to the grammar rules of the token
tis me
my old compiler has 72 byte tokens
believe it or not the slight redundancy is faster than bloating the token structure with that value
wow
this also precomputes hashed strings
liam?
no im sandwichman
different
i work on a third-party jackal compiler and my own stuff
but im familiar with the newsdk internals so i answered jack's question abt it
i wish i had more hours per day to work on all of my hobbies and education at the same time :\
thats real
if you don't care about performance then you can store as much as you want in your token structure
im just saying that these tradeoffs are tried and tested
i thought it was about memory footprint
in modern compiler frontends
not performance
those go hand-in-hand
if you can fit 8 tokens into a cache line it's fantastic
zip zoom all the live long day
i do the iterative approach in this compiler
Ah
so does the cacheline really matter
if you're not optimizing for performance, then no
it doesn't
i'm just saying that thats what i do and thats what other modern, performance-optimized frontends do
i'm not actually sure
hmm let me check
carbon and zig are the big examples of hyper-performance-optimized frontends
that ive seen
this is rustc's token ```rs
pub struct Token {
pub kind: TokenKind,
pub span: Span,
}
nah their tokens are pretty big
i suspect because of the preprocessor and all the c++ bullshit
but yeah thats why i make the decisions i do in coyote
it's all about what your goals are
my goals are performance and memory usage
if it makes the compiler harder to write in some places, that's a price i'm willing to pay
coyote is not a public archive?
oh yeah
thanks
i threw it together in like 5 minutes and the generator itself is pretty slow lmao
but it does work
language design wise
im still debating on
whether to have strings as a data type
or just a struct defined by the compiler
in my old compiler theyre just char * and 64 bit size in a struct str
is your language manually memory managed?
yes
interesting
rust does a nice thing where str is basically identical to a slice of u8 with the additional guarantee that the content is utf-8
does it have slice/array reference types
inchresting
well then i lean towards compiler-defined struct
if you don't have either of those
yeah ig thats the best
slice types are pretty useful i recommend them
just pointer and length in a convenient package
coyotl
i just dont really see how to make a good type system without having it really minimal
a lot of stuff feels redundant or hard to parse / gen code for
wont know til you try + i like to answer questions about compilers so feel free to hit me up
this was the original nahuatl (aztec) word for coyote but the Spanish were stupid so they kept hearing coyotl as coyote and now we say coyote
with slice types my problem is
a lot of the time you want differently typed size field
otherwise you just get 2 words
that's an interesting thing to consider in your syntax
but also, wouldn't it always take up two words anyways?
because the size of a type should always be a multiple of its alignment
and the alignment has to be word size, because pointers are word sized
so it would be the size of two words anyways
im considering cases where you have an upper bound already
like your token struct for jackal for example
in case where you're optimizing for layout like that, it's probably beneficial to split it up into just separate data and length fields inside your container type
something that i like that zig does is that you can extract a slice's pointer and length just like a struct with data and len fields
so going from slice <-> ptr, len is trivial
the main advantage of slice types is for things like parameters and return values, or plain variables
imo
i suppose i could also use my struct member offsets to overwrite a part of the slice with other data
HEEEEEEELP!!!!!! HEEEEEEEEEEEEEELP
i definitely wouldn't suggest that but it is certainly an option
🛟
i click on this thread and this is the first thing i see
this is probably older than you at this point
struct thing
{
u8 'a; // u8 *data; u64 size;
$-4 u32 b; // overwrites half of size
};
hmm i could maybe use a backtick for spans
u8 `a
or nah idk
this is probably bad syntax, but something like this ```rs
struct thing {
ptr: [^.len]u8,
len: u32,
};
ah..
a "slice" type that is just a pointer with the static information that the length is contained somewhere nearby
this is possible
but
it makes your type system much more complex
if you want a type where the length is part of that type, but you don't want to store it in the same storage as the type's value, then i don't see another way to do it
this doesn't add any runtime information btw
its purely static
it does make taking that slice type anywhere else very tricky
because you have to make sure that the length always accompanies it
i think i have a better idea on how to make this work
(using my own language's syntax as an example) what i would suggest is having a slice type []T, but also have an indexable pointer type [^]T which is distinct from a regular pointer type ^T
use the slice type when you can, but otherwise just keep the indexable pointer and length separate if you need that
struct thing
{
u8 *ptr;
u32 len;
const u8 ^span = ^(ptr, len); // this is purely an alias
};
like a macro that belongs to the struct ig
interesting, afaik this is basically an alternate syntax to having like an inline method that constructs and returns a slice from the struct
the silly
this is a very interesting way to express it
i kinda like it
if i already have a slice type id rather not have any pointer arithmetic at all tbh
you could also treat a span as a struct definition
and do
u8 ^span {
u8 *ptr;
u32 len;
}
I like when she daps him up
i'm not sure what this is expressing
the ptr and len still belong to the struct
the { } just mean the span is aliasing its own members as them or smth ig
yeah this is probably better but i dont like the concept of struct members having any logic
the way i would write this in my in-progress language is: ```rs
struct Thing {
ptr: [^]u8,
len: u32,
pub inline fun span(^self) -> []u8 {
return self.ptr[..len];
}
};
and you would do thing.span() and use that as a slice
and because it's inline it's guaranteed to be inlined and optimized away
like if you were just using the ptr and len fields by themselves
you could also implement the compiler's Index trait and then just use the thing[idx] operator directly
but i think a generics/trait system is out of the scope of your language given that you want it to be minimal
the lesson is that unfortunately i dont think there is a simple solution for this problem
the thing i would recommend for your language is this
a [^]T is just a ^T that allows you to use the index operator
but if you dont wanna separate those concepts then its okay
i just want there to be 1 solution for every problem and it feels redundant to have all those things at the same time
lets say i have both spans and pointers
well pointers are just spans of size 1
so thats reundant
and feels shit
unfortunately there is never one way to do things that will satisfy all use cases well
this is my old type system
you could do what C does and just have one pointer type with no length, but that means that you have to manually supply the length every time you want to pass it somewhere
which if you dont mind that, then that might work for you
ig ill just keep my old system
i personally prefer the ergonomics of being able to reference an array of values and keep the length around
sure thing
i think the most interesting thing here is the moff field in struct members
basically you can have the offset of a struct member
be the value of another struct member
that sounds like dependent types to me lmao
i think i intended for it to make it easier to parse file formats
and have multiple FAMs in one struct
not of the field type, but the struct type
i guess
its size is dependent on a value contained in it
thats a pretty canonical example of a dependent type if i understand them correctly
that makes sizeof a runtime calculation then? for structs that have that?
oh nah, it has a constant size no matter what
my structs are like little assembly programs ig
the size is just the offset of the last variable + its size
a union is literally a struct but it disables the offset increments
but that offset might be dynamically determined, right?
you can make a union without the union keyword by just making a struct with every offset as just @ 0
no, if you use moff, it just doesnt affect the offset at all
so it's like a FAM (the field has effectively 0 size)
ah
struct Thing
{
u64 fam0_size;
u64 fam1_size;
u64 fam2_size;
u8 fam0[];
u8 fam1[] @fam0_size;
u8 fam2[] @fam1_size;
};
this is a good use case i think
interesting
but this struct would have a sizeof of 24
struct Thing
{
u64 thing @-8;
};
``` ok i actually havent thought about this use case because it's totally possible and it would create a struct with negative size
hahaha this totally breaks pointer arithmetic
i get the vibe that this language isn't big on safety checks
lol it does 0 checks
it's just C but with my additions
and removals
where i saw fit
i think i showed this to you before but u forgot ig
in like 2024
hmmmge i remember vaguely
this is an operator
it also works on magic constants so you can make a bit enum and do var@FIELD0
is it & 7 or & ((1 << 7) - 1)
& 7
interesting
so it extracts bits 5, 6 and 7
it's an int where first 6 bits are offset
and later 6 bits are size-1
theres a special enum type that constructs these values
you could build them at runtime but it would generate extra code
here's an example usage in the lexer
where it's building that value at runtime
what's the @@@ there
yeah wtf is that lol
is a weird editor thing
ooh those are the spaces
interesting
i like to know if whitespace is tab or a space
what editor is this?
interesting
in vscode if you highlight it whitespace it will show you what the characters are
this is what spaces looks like
yeah i should pick a better char
sorry will would you like us to talk abt this somewhere else
What will they look like in xrcode the native jackal ide running on mintia2
fox emoji
idk let the people in the next century think aboujt that
or jackal emoji
we'll make one
and add it to unicode in some unused/vendor-reserved spot
im returning to my project because will is employed so my only competition is aphelion now
im not and i still have basically no time to work on it
damn you 24 hour days
cant the earth just revolve a lil slower
if it did they would just make you work longer
true
@twilit smelt (@hidden shore wants to ask) are you the only person in utah
I've only ever heard of will, so I think this is false
personally i havent seen anyone younger than 4 so that checks out
never known anyone else except him from utah
what about that bricks and minifigs guy
he also lives in utah i think
not the reckless ben guy
the guy who stole the lego
No, I am not in Utah
I'm glad I got continuations done before I left
It'd really bother me if that were still half done
I mean I didn't fully implement the direct return to usermode continuation
Gonna work on that soon
It's the last piece of the puzzle
Fun stuff is needed for that
Specifically upon a syscall (and only a syscall) exception I need to save all the callee-saved registers in a special location that is not the kernel stack bc it's disposable now
Probably a block in the thread struct
The return to usermode continuation will restore those callee saved regs before jumping back to userspace
(And probably clear the caller saved regs to avoid leaking kernel info)
i thought continuations were meant to lose information
why do you need to save any registers at all?
Because if usermode does a syscall it expects the callee saved regs to be saved across it bc it's a function call like event
One example of a callee saved reg that's pretty important is the program counter for example
but if you're specifying a continuation then it's not like a function call at all
Continuations are a kernel mode implementation detail
then why can the user specify a continuation on a syscall??
Never said it could
so if the user cant specify a continuation then why do you need to handle it
Because the implementation of a syscall can use continuations
ooooohh
And it will otherwise lose the user context that was saved on the kernel stack
Unless I save it elsewhere
ok nvm i misunderstood the issue
hmm so why have any callee saved regs except a stack pointer and the PC btw
realistically those 2 should be enough
Mainly it's to have a consistent user context to refer to while the thread is in kernel mode regardless of whether it got there via syscall or via exception or what
He's 20 years old
bruh
youngest person ever
@dense vigil remember our pact that when mintia2 was ported to amd64 then we would combine our efforts
u don't remember?
I remember talking about it but iirc i said i didnt want to deal with it since it wasnt in C
I said since u seemed to like working on everything other than kernel proper and I only liked kernel proper it would be cool if we combined efforts later and u agreed but this was like 3 yrs ago
I said ur parts would be in C
ex hyena would be 500% there
Weren't you doing like uacpi and some gpu drivers and stuff for ur own hobby os
its in the plans yes
u guys should instead focus on the obviously cooler project (mine) that runs on a REAL computer
He died when I stopped being able to respect myself as a hyena.