klange changed the topic of #osdev to: Operating System Development || Don't ask to ask---just ask! || For 3+ LoC, use a pastebin (for example https://gist.github.com/) || Stats + Old logs: http://osdev-logs.qzx.com New Logs: https://libera.irclog.whitequark.org/osdev || Visit https://wiki.osdev.org and https://forum.osdev.org || Books: https://wiki.osdev.org/Books
Bonstra has quit [Ping timeout: 260 seconds]
goliath has quit [Quit: SIGSEGV]
vai has quit [Ping timeout: 245 seconds]
sbalmos has quit [Ping timeout: 255 seconds]
sbalmos has joined #osdev
Arthuria has joined #osdev
navi has quit [Ping timeout: 252 seconds]
fkrauthan has quit [Quit: ZNC - https://znc.in]
fkrauthan has joined #osdev
fkrauthan has quit [Remote host closed the connection]
edr has quit [Quit: Leaving]
fkrauthan has joined #osdev
<heat> i had to fix a fun data corruption bug where i ignored the nvme controller's max transfer size
<heat> which resulted in bad mkfs'd filesystems (mkfs was the only thing writing enough contiguous stuff that could be merged)
gbowne1 has quit [Quit: Leaving]
<mjg> ey does onyx survive git clone of its own repo
<heat> i don't have a git port yet
<kof673> nortti, yes, but....my only point is people (lawyers and not) re-use words with prior meaning all the time, chaos is eternal :D
<kof673> there is no version control lol
<kof673> so you must play 20 questions to maybe see which version they mean lol
<kof673> was just an example, you can find the supreme court saying those are the "only states" that "the constitution" was about lol to clarify how it might persist beyond 1780/1790/whatever lol point being, now there are even more versions lol
<kof673> it is the opposite of occam's razor, entities get duplicated forevermore lol
<kof673> > "The Trouble with Tribbles" is the fifteenth episode of the second season of the American science fiction television series Star Trek
Celelibi has quit [Ping timeout: 246 seconds]
<kof673> my only argument is different entities should get a version number and/or a new name, not arguing these examples :D
<MelMalik> do you need some triticale
Stary has quit [Quit: ZNC - http://znc.in]
CompanionCube has quit [Quit: ZNC - http://znc.in]
Stary has joined #osdev
CompanionCube has joined #osdev
dude12312414 has joined #osdev
dude12312414 has quit [Remote host closed the connection]
<azonenberg> Is there a way to have GNU ld limit the maximum size of a section?
<azonenberg> basically i have a small region within a larger MEMORY that I want to be able to store up to, say, 32 or 256 bytes of variables in
<azonenberg> but have the linker complain if I use any more
<azonenberg> tl;dr the device memory map is annoying and the NVM registers (persisted on battery backed RAM when the main MCU is powered down or rebooted) is within the peripheral address region
<azonenberg> the "easy" option is just to have a fixed address for the NVM region that I can cast to whatever structure i feel like using
<azonenberg> but i'd like to be able to just declare globals and put them in that region
<azonenberg> and have the linker sanity check i don't use too many
<zid`> that's already what memory and sections do though?
<azonenberg> zid`: the problem is its not a separate region of memory
<azonenberg> its a little chunk of like 256 bytes in the middle of one of the APB bus regions
<azonenberg> it would totally be possible to make separate MEMORY regions for the low and high halves of the APB with the bbram in the middle
<azonenberg> just ugly
<zid`> I mean, that sounds like a memory region to me
<heat> azonenberg, technically there's a way
xenos1984 has quit [Read error: Connection reset by peer]
<heat> the counter in a linker script can't go backwards
<heat> so if you do . = ADDR(.mysection) + 256 and it goes backwards, it'll error out
<azonenberg> so lol
<azonenberg> that sounds horrible
<azonenberg> but it could work
<zid`> yea, that's the section approach
<zid`> just bracket it with two addresses
<zid`> and it'll warn if they try to overlap
heat has quit [Ping timeout: 256 seconds]
srjek has quit [Ping timeout: 255 seconds]
Arthuria has quit [Ping timeout: 268 seconds]
xenos1984 has joined #osdev
Bonstra has joined #osdev
skipwich has quit [Ping timeout: 256 seconds]
skipwich has joined #osdev
foudfou has quit [Remote host closed the connection]
foudfou has joined #osdev
hunta987 has quit [Quit: Lost terminal]
Celelibi has joined #osdev
carbonfiber has joined #osdev
skipwich has quit [Ping timeout: 260 seconds]
<mjg> gog on monday morning https://imgur.com/gallery/PrUuiNc
<bslsk05> ​'Snek' - ''
skipwich has joined #osdev
vai has joined #osdev
gog has quit [Ping timeout: 255 seconds]
goliath has joined #osdev
bauen1 has quit [Ping timeout: 264 seconds]
netbsduser` has joined #osdev
vai has quit [Ping timeout: 260 seconds]
<kof673> > int magic(int bar) @magicfunction(99); void moremagic(void) @magicfunction(100) { } </nescc example of "attributes">
bauen1 has joined #osdev
netbsduser` has quit [Ping timeout: 268 seconds]
<kof673> > Installing the nesC compiler. TinyOS is written in nesC, a dialect of C with support for the TinyOS concurrency model and component-based programming. The nesC
<kof673> compiler is platform-independent: it passes its output to the native compilers, so that it can take advantage of all of the effort put into their optimizations.
<kof673> i was just looking at it for that reason, it can dump to xml things it parses (of which, normal C is a subset). the example "atomic" { } ....just disables interrupts <m j g in shambles> but it was for small devices
chiselfuse has quit [Remote host closed the connection]
chiselfuse has joined #osdev
vai has joined #osdev
GeDaMo has joined #osdev
gog has joined #osdev
Matt|home has joined #osdev
zxrom has quit [Quit: Leaving]
zxrom has joined #osdev
zetef has joined #osdev
agent314 has joined #osdev
m3a has quit [Ping timeout: 260 seconds]
zetef has quit [Remote host closed the connection]
theyneversleep has joined #osdev
voidah has quit [Ping timeout: 255 seconds]
netbsduser` has joined #osdev
srjek has joined #osdev
goliath has quit [Quit: SIGSEGV]
wand has quit [Ping timeout: 260 seconds]
vdamewood has quit [Quit: Life beckons]
wand has joined #osdev
bitoff__ has quit [Ping timeout: 268 seconds]
Left_Turn has joined #osdev
mavhq has quit [Ping timeout: 255 seconds]
m257 has joined #osdev
mavhq has joined #osdev
skipwich has quit [Ping timeout: 246 seconds]
zxrom has quit [Remote host closed the connection]
zxrom has joined #osdev
voidah has joined #osdev
skipwich has joined #osdev
gildasio has quit [Ping timeout: 260 seconds]
<mjg> /* In order to reduce some races, while at the same time doing additional * checking and hopefully speeding things up, we copy filenames to the * kernel data space before using them..
<mjg> .. :D
<mjg> actual comment from linux
gildasio has joined #osdev
Arthuria has joined #osdev
Arthuria has quit [Ping timeout: 260 seconds]
m3a has joined #osdev
wereii has quit [Quit: ZNC - https://znc.in]
wereii has joined #osdev
voidah has quit [Ping timeout: 252 seconds]
vin has quit [Quit: WeeChat 2.8]
vin has joined #osdev
joe9 has quit [Quit: leaving]
voidah has joined #osdev
navi has joined #osdev
MiningMarsh has quit [Quit: ZNC 1.8.2 - https://znc.in]
MiningMarsh has joined #osdev
<ddevault> getting lwext4 to write this filesystem properly is proving difficult
<netbsduser`> what's happening with it?
<ddevault> creating a new regular file in root
<ddevault> shows up when I readdir via lwext4, while the block cache is warm (yes I tried flushing the cache)
<ddevault> but it does not show up when I shut off the VM and mount the filesystem via loopback
<netbsduser`> odd
<netbsduser`> the only caching lwext4 does *is* the block cache, isn't it? i'm not sure if even active inodes and the superblock itself are cached separately from the block cache
<ddevault> fsck.ext4 found the file
<ddevault> well, that's a hint
<ddevault> Unattached inode 1590
<netbsduser`> it's probably too obvious but does the lwext based driver still see the file after cold boot the vm?
<ddevault> nope
<ddevault> bah
<ddevault> need a break, will come back to this
<netbsduser`> my single best guess right now then is if the inode itself is cached separately to its presence in the block cache and that the modified in-memory inode hasn't been flushed
edr has joined #osdev
<netbsduser`> (i am thinking about the length field in particular)
goliath has joined #osdev
vin has quit [Quit: WeeChat 2.8]
vin has joined #osdev
edr has quit [Ping timeout: 245 seconds]
ZipCPU has quit [Remote host closed the connection]
ZipCPU has joined #osdev
ZipCPU has quit [Ping timeout: 268 seconds]
ZipCPU has joined #osdev
edr has joined #osdev
theyneversleep has quit [Remote host closed the connection]
m257 has quit [Quit: Client closed]
op has joined #osdev
Turn_Left has joined #osdev
Left_Turn has quit [Ping timeout: 272 seconds]
m257 has joined #osdev
voidah has quit [Ping timeout: 268 seconds]
heat has joined #osdev
<heat> mjg, how old is that comment?
<mjg> no idea, presumably predating git
m257 has quit [Ping timeout: 250 seconds]
<heat> see the historical repos
<bslsk05> ​git.kernel.org: kernel/git/tglx/history.git - Linux kernel history
<mjg> you see historical repos
<heat> no
<heat> you found the comment, you'll trace it back to linus's garage
Left_Turn has joined #osdev
<mjg> paypal me 10$
<heat> $ on the wrong side idiot
<heat> classic europoor
Turn_Left has quit [Ping timeout: 256 seconds]
<mjg> you ok
<mjg> let request_line = buf_reader.lines().next().unwrap().unwrap();
<mjg> check this guy out, outrusted rust
* FireFly unwraps mjg
<heat> i'm never ok
<heat> i also have .unwrap() on my kernel, contribute contribute contribute contribute
<FireFly> never ok? d-does this mean yer err?
wand has quit [Ping timeout: 260 seconds]
foudfou has quit [Ping timeout: 260 seconds]
<heat> this is r/rustjerk material
chiselfuse has quit [Ping timeout: 260 seconds]
<acidx> let request_line = buf_reader.lines()????????????; // is this a statement or a question? we'll never know
<FireFly> rust statements dreamed up by the utterly deranged
chiselfuse has joined #osdev
<mjg> lolipop.unwrap().into_inner().tranpose()?
<mjg> let file = fs::File::open(filename).unwrap();
<mjg> webdev error checking
<heat> most software can and should panic on error
<heat> facts
<mjg> bro that's part of a "http" server
<heat> mjg, re on the Box stack thingy: https://crates.io/crates/pinned-init
<bslsk05> ​crates.io <no title>
<heat> okay maybe not as an http server
<mjg> this is a self-proclaimed beginner in programming
<mjg> so i don't judge the person
<mjg> i'm conisdering what to respond with, which will both be helpful and wont get me downvoted by webdevs
<acidx> c.rates.io, the C package manager,
<mjg> the problem is the real advice would be to ditch rust
<mjg> it's a terrible first time lang
<heat> probably
<heat> C is a good first time language if you like pain
<mjg> i did a quick check for httpd crates
<heat> in other cases, java?
<heat> or go maybe, but i don't know go
<mjg> top result is something which just uses tokio
<mjg> go is ok
<mjg> basically anything with types is already in the running
<heat> python is too much of a mickey mouse language to be a good first time lang
<mjg> then there are warts which make the thing take itself out of it
<heat> C is a good choice as the base of the language pyramid
<mjg> dude almost everyone out there claiming to know c never wrote a real program in it
<heat> probably
<heat> anyway, in the nvme 2.0 changeset: Adds support for rotational media (e.g., HDD)
<heat> ??
<zid`> qbasic then C
<dostoyevsky2> mjg: I kind of prefer B to C anyways
<heat> why would ANYONE do rotational media in NVME? how tf would that work?
<zid`> cus
<zid`> people like to remove old busses
<zid`> that means your perfectly legitimate spinny disks need to go over nvme
<heat> yes but nvme is the worst choice for spinny disks
<zid`> as long as it can keep up, it's fine
<heat> you can't have any parallelism in serving requests
<zid`> or is nvme too slow for rust
<heat> nvme is supposed to be a mega-deep mega-wide queue of requests, none of those properties apply to rotational media
<zid`> no, it's a bus
<heat> it's a bus that speaks a protocol with a given interface
<mjg> thread 'main' panicked at library/core/src/panicking.rs:228:5:
<mjg> panic in a destructor during cleanup
<mjg> thread caused non-unwinding panic. aborting.
<zid`> you connect devices to it, and some support some things, some support other things
<mjg> :d
<mjg> panicked while panicking
<heat> nvme is also technically not a bus
<heat> nvme over pcie is
<clever> zid`: i think ive heard of high tier aws servers, having a card that claims to be nvme to the guest, but then fires all requests out a network port, into the cloud
<heat> or nvme over tcp
<zid`> do you bitch if people plug a 1024*768 monitor into 4090 gtx because the framebuffer size is wasted
<clever> zid`: so the guest can then get the benefits of the big nvme queues, and existing driver support
<heat> that's nvme over tcp clever
<clever> heat: the weirdness i saw, is that the guest was seeing it as an actual pci device in lspci
wand has joined #osdev
<dostoyevsky2> I was trying to figure out the other day how hard it would be to create a fake hdd for qemu, like writing a server that makes qemu believe its a block device
<clever> dostoyevsky2: i just finished implementing virtio-blk, but thats one step too deep, qemu already did that for you
<clever> for your case, fuse might be an option, so you can tell qemu to read /fuse/foo.img, and then fuse can just make up whatever answer it wants
<dostoyevsky2> clever: fuse for qemu? Wouldn't it be esier to just use fuse without qemu?
<clever> i was just thinking, fuse on the host side, to create a fake disk.img file, and then qemu opens that as normal and passes it thru to the guest
<clever> and then fuse can decide where the writes actually go
<dostoyevsky2> I think the api for a hdd is much simpler than a filesystem, you just need like readat/writeat
<acidx> qemu already supports network block devices
<dostoyevsky2> https://www.qemu.org/docs/master/tools/qemu-nbd.html <- this? I guess one could try to implement this protocol
<bslsk05> ​www.qemu.org: QEMU Disk Network Block Device Server — QEMU documentation
<acidx> yup, nbd
foudfou has joined #osdev
<bslsk05> ​pojntfx/go-nbd - Pure Go NBD server and client library. (19 forks/335 stargazers/Apache-2.0)
<dostoyevsky2> jackpot
<bslsk05> ​users.rust-lang.org: Serving static files with a rust tcp server - #3 by mjguzik - help - The Rust Programming Language Forum
<mjg> waiting for fuckers to tell me how the dogshti code from docs this poor guy copied is totally not a problem
vai has quit [Quit: Lähdössä]
root has joined #osdev
root is now known as Guest8134
Guest8134 has quit [Client Quit]
vai has joined #osdev
xenos1984 has quit [Ping timeout: 272 seconds]
xenos1984 has joined #osdev
<dostoyevsky2> acidx: is there something similar to nbd for simulating a graphics card?
vai is now known as Jari--
<Ermine> But why does nvme over tcp exist
<zid`> because data centers want terrabytes of storage per machine, but don't want each machine to have loads of hdds in it
<zid`> and a billion copies of the same linux install
<clever> dostoyevsky2: qemu does have spice and vnc support, which lets you remote into the virtual gpu
<Ermine> How does one reverse engineer windows drivers
<zid`> free time and a debugger
<dostoyevsky2> clever: clever: yeah, but I am looking for an api that makes qemu believe that is a video card it could draw to and then intercept the calls to whatever I like
<acidx> dostoyevsky2: not that I know of
<acidx> qemu connecting to a nbd server that's actually serving a linux distro iso through bittorrent would be pretty nifty
blockhead has joined #osdev
<acidx> with overlayfs you could even have multiple immutable hard disk versions served through bittorrent in a fleet -- overlay the new version for a system update, and unmount the older version. that would also be pretty cool.
goliath has quit [Quit: SIGSEGV]
<clever> dostoyevsky2: and whay would that give which vnc cant give?
<dostoyevsky2> acidx: I am not even sure if you can just tell bittorrent what chunks you want, so maybe better use a distributed filesystem like ceph?
<clever> dostoyevsky2: you can freely request chunks from peers in the torrent protocol
<clever> thats how you can prioritize some files over others
<acidx> dostoyevsky2: you can! most clients will grab chunks at random based on availability, but nothing is stopping you from fetching the chunks you want.
<heat> Ermine, there's also nvme over oF
<heat> sorry, nvme oF
<heat> over fabrics
<dostoyevsky2> acidx: I tried setting up a private torrent network as a distributed filesystem once... but I haven't found much documentation on how to run your own private bittorrent servers, nor does there seem to be something like a libtorrent that you can easily start to use.. I did find a torrent implementation for Go that looked promising but it turned out that it uses a lot of CPU
<heat> this is what they actually use in the datacenter i think, if they have mega cool fabrics that is
<heat> mjg, >Multithreading as employed there is actively detrimental to performance and is not how things are done in real programs, at least on Unix systems (like Linux, where I presume you are trying to run this).
<heat> what?
qubasa has quit [Remote host closed the connection]
<heat> are you still not a mutex believer
<zid`> multithreading makes things slower is just a fact
<mjg> :(
<heat> you're very stubborn
<heat> aka very me
<heat> congrats
<dostoyevsky2> xlock compxchg seems like such a waste, why can't they find a better mechanism on the cpu level other than having your cores use up all the cpu to wait for a mutex?
<zid`> like what?
<heat> what?
<heat> 1) that's a spinlock, not a mutex
<heat> 2) commonly you do test-and-test-and-set instead of lock cmpxchg'ing in a loop
<zid`> tbh it sounds like you want.. reality to be different?
<zid`> "I want to be able to do useful work while there's no useful work that can be safely done"
<heat> isn't that what the whole transactional memory thing is all about?
<zid`> We already have "do other work instead" available, it's called yielding to a differnt task. But nothing is going to be able to make you be able to do work while you can't do work
gog has quit [Quit: Konversation terminated!]
m257 has joined #osdev
xenos1984 has quit [Ping timeout: 245 seconds]
xenos1984 has joined #osdev
<Ermine> RTW failed to launch in Alpine. :(
<heat> TRIARIIIIIIIII
<heat> i'll never understand why they picked a squeaky pre-teen to voice RTW units
<Ermine> triarii didn't reach Alps this time
<heat> get owned hannibal
<mjg> what's rtw? return to wakanda?
<Ermine> rome: total war
<mjg> you thinkin' about the roman empire a lot
<mjg> anyhow linux gaming is like linux wifi in 00s
<mjg> if it works, it mostly does not
<mjg> and if it does not, it does not
<heat> linux gaming actually works fine these days
<Ermine> This time I test Wine on musl in particular
<heat> AC routinely shits itself if the game has it, but most games work
<heat> thank you valve
<Ermine> It could be attributed to dev version of wine
<Ermine> I'm also downloading red alert 3, so let's think about the empire of the rising sun
<Ermine> I guess it won't work though
<GeDaMo> There's a game called 0AD, real time strategy, Linux native
bitoff has joined #osdev
gog has joined #osdev
dude12312414 has joined #osdev
zetef has joined #osdev
m257 has quit [Quit: Client closed]
m257 has joined #osdev
zetef has quit [Ping timeout: 245 seconds]
dude12312414 has quit [Quit: THE RAM IS TOO DAMN HIGH]
m257 has quit [Ping timeout: 250 seconds]
<netbsduser`> heat: it's fine
<netbsduser`> it's just a time traveller from the turn of the millenium
<netbsduser`> kqueue was just invented and solved the problems of select()/poll() and has allowed web servers to scale right up
suqdiq has joined #osdev
goliath has joined #osdev
<zid`> Iron plates? In *my* copper belt? It's more likely than you think!
<zid`> Click here for your FREE consultation
zetef has joined #osdev
<nikolapdp> did you say FREE
<nikolapdp> sign me up
<zid`> Okay, we just need the application fee
zetef has quit [Quit: https://quassel-irc.org - Chat comfortably. Anywhere.]
Turn_Left has joined #osdev
Left_Turn has quit [Ping timeout: 255 seconds]
Left_Turn has joined #osdev
Turn_Left has quit [Ping timeout: 245 seconds]
gbowne1 has joined #osdev
goliath has quit [Quit: SIGSEGV]
<nikolapdp> well it ain't free then
Turn_Left has joined #osdev
Left_Turn has quit [Ping timeout: 268 seconds]
<Bitweasil> Free! With $19.99 S&H!
<Bitweasil> _Sigh_
<Bitweasil> You know what really upsets Linux? When kzalloc doesn't return a zeroed page.
<nikolapdp> yeah that would make sense
<nikolapdp> it would upset me to ask for zeroed pages and i don't get them
<nikolapdp> *me too if i ask
GeDaMo has quit [Quit: 0wt 0f v0w3ls.]
zxrom has quit [Quit: Leaving]
<zid`> yea I'm not sure that's just a linux thing
<Bitweasil> _whistles quietly_
<Bitweasil> So, DC... data cache commands... on ARMv8, include "DC ZVA." Zero Virtual Address.
<Bitweasil> Which is used *extensively* to do exactly that.
zxrom has joined #osdev
<heat> oh is this a cache coherency thing?
<heat> might be missing a dma_wmb()
<Bitweasil> No, I'm working on an emulator.
<heat> dc zva bug then?
<Bitweasil> This is a "I made all DC instructions a NOP because I missed that the zero cache line was an option in there."
<Bitweasil> So, yeah, bug. ;)
<heat> haha
<geist> ah yep!
<geist> make sure CTR_EL0 matches it too, since one of the fields there is the size of the DC ZVA block
<heat> the idea of missing a dma_wmb() and dc zva not writing back was more enticing :(
<geist> but 99% of the time it's the same as the cache line size
<heat> i like fun hard bugs to figure out
<geist> some code in various libs will read ctr_el0 and then compute the loop right then
<nikolapdp> heat we already established you're a masochist
<heat> who doesn't like a hard bug?
<nikolapdp> exactly what i am talking about
<heat> fuckin WEBDEVS
<nikolapdp> wat
<Ermine> fwiw wine doesn't work very good on wayland
<heat> works okay on my end
<FireFly> I use it almost daily under wayland, but admittedly only for one program and through a launcher that manages the wineprefix correctly for it for me
<Ermine> tried red alert 3, I can't click anything in it under wayland. It works under x11 though
<Ermine> And I guess anyone can modeset under X11?
<FireFly> maybe wrapping it in the whatsitcalled, gamescope helps?
<Bitweasil> geist, isn't the size of the DC ZVA block set in DCZID_EL0?
<Bitweasil> (I'm not seeing it in CTR_EL0 as a field)
<geist> you are correct sir
<geist> it's the *other* cache el0 register :)
<Bitweasil> But, yeah, I'm aware of that interoperation and plan to respect it. :D
blockhead has quit []
<geist> perfect
<heat> geist misremembered an aarch64 architectural detail???
<heat> party time!
<geist> i know!
* geist is old and goes out behind the shed
<heat> whats your favourite operating system
<Bitweasil> "Whatever has pissed me off least lately." Currently, Linux in the Qubes meta-OS system.
<heat> wrong answer
<heat> the right answer is either solaris or windows me
<zid`> The OS that has pissed me off the least lately is erm, amiga workbench?
<mjg> ey geist want to get triggered?
* geist goes into a blind rage
<geist> AMIGAOS argh!
* geist throws a tantrum
<zid`> do I need to normalize for hours used
<mjg> well i did not watch the shit and it is out of my history and does not easily come up in searches either
<mjg> anyhow
<nikolapdp> SOLARIS
<mjg> dude claimed he worked for 25 years on his os
<mjg> and it finally is great
<mjg> turns out by that he meant his custom linux distro
<zid`> well that's an improvement over last time
<zid`> I'd rather a tantrum than a chair
<bslsk05> ​users.rust-lang.org: (async) zero-copy file write() in Rust - help - The Rust Programming Language Forum
<mjg> someone points out PESSIMAL behavior
<mjg> albeit i'm a little triggered that by "zero-copy file write" they meant not doing blatantly avoidable copies within userspace
<nikolapdp> yeah, pretty low bar
<heat> hey uh
<heat> do you need a gf?
<Ermine> I don't like windows me, I like windows 95
<heat> i'll give you an Arc<Girlfriend> so you stop stalking the rust forums for PESSIMAL behavior
bauen1_ has joined #osdev
<nikolapdp> well maybe rust should stop being pessimal or stop adventrtising as not being pessimal first :)
<mjg> i was gonna write a pointed post asking for real concurrency-related material as opposed to the marketing bs
<heat> you realize you can be PESSIMAL in any language right?
<mjg> you do realize rust claims to not be
<heat> MON
<nikolapdp> i am not talking about programmers using the language
bauen1 has quit [Ping timeout: 268 seconds]
<heat> i can do the exact same shit in C
<mjg> stating perf while not sacrificing reliability as one of the goals
<nikolapdp> i am talking about being forced by the language
<mjg> mofo
<heat> this is not being forced by the language
<mjg> the question is not if someone determined to do PESSIMAL can do it in rust
<Ermine> standard library can be made optimal though
<mjg> the question is of one has to jum pthrough hoops to avoid it, for one
<mjg> if one*
<nikolapdp> if that's even possible without unsafe
<mjg> knowing rust up to this point, it probably is not
<zid`> No language behaviour counts as language behaviour if there's a crate written in C or unsafe rust to fix it
<zid`> duh
<nikolapdp> kek
<nikolapdp> clearly
<mjg> literally every crate trying to do something sensible from perf standpoint that i had seen rolls with unsafe
<heat> good
<Ermine> you can be pessimal in language, but can you be optimal in any language?
<nikolapdp> wasn't the whole point of rust to not need unsafe unless interacting with other languages or the kernel
<nikolapdp> huh
<nikolapdp> weird that
<heat> no
<mjg> Ermine: you can optimal in PHP
<heat> the point of rust is to minimize unsafety
<zid`> They're still trying to figure out the point
<heat> which, tuh duh, they did it
<mjg> nikolapdp: i can give them some benefit of the doubt and assume it's a temporary problem
<nikolapdp> sure
<heat> you best believe
<mjg> but it probably is not, let's be real
<nikolapdp> but you can market it as the ultimate language
<heat> 1% unsafe is better than 100% unsafe
<Ermine> then rust is one among many languages with some memory abstractions
<zid`> so why isn't rust javascript, heat
<zid`> that is also 100% safe
<mjg> heat: ye except if the bits which are tricky in C are also the same bits which require unsafe in rust
<zid`> clearly they had more in mind than "make it safe"
<mjg> i don't know if you are winning much of anything
<nikolapdp> they are winning the marketing battle
<heat> mjg, the problem is that all bits are tricky in C
<nikolapdp> because c doesn't have a cult behiind it
<heat> you can trivially fuck up your stack, *trivially*
<heat> oh yeah?
<heat> this IRC proves you wrong
<mjg> ok i'm gonna start a c cult
<mjg> C provides fearless segfaults
<mjg> and contrary to rust advocacy, it is true
<zid`> Finding people both capable and wanting to write safe C is harrd
<nikolapdp> *(char*)NULL
<zid`> it's like, three lines of code to write a safe string impl, nobody wants to
<Ermine> c cultists don't go to projects demanding they shall be rewritten in c at least
<zid`> I do
<heat> c cultists cry if anything is not written in C89
<mjg> dude
<mjg> some fucking people are totally going to demand c rewrites of new rust code
<zid`> I don't cry I just get very disappointed in them
<zid`> for being hipsters
<FireFly> heat: the operating systems course at uni was like that
<nikolapdp> kek
<heat> i need to copy a string to a bounded array, what function do i use?
<Ermine> I see RIIR issues, but not RIIC89 issues
<heat> strcpy, strncpy, strlcpy, strcpy_s
<zid`> memcpy duh
<heat> memcpy!
<nikolapdp> eh memcpy?
<nikolapdp> is that so hard
<nikolapdp> ?
<mjg> do you include \0? :thinkingface:
<heat> memcpy?
<zid`> But yea, C's so obviously broken in multiple ways
<zid`> that it HURTS
<heat> do you use memcpy to copy strings???
<zid`> when the new specs come out and it's still fucking shit
<mjg> i do
<zid`> There's SO MUCH low hanging fruit a C 1.1 could have done, instead they just keep doing C 1.00.023
<mjg> memcpy(ncp->nc_name, cnp->cn_nameptr, len);
<nikolapdp> why wouldn't you
<mjg> noice
<mjg> are you the kind of a fucker who thinks it would imply calling strlen first
<mjg> and thus PESSIMAL
<zid`> Instead we get fucking, C++ and Rust
<zid`> and C23
<zid`> *cries*
<mjg> contrary to rust belief, there is c code out there which knows the length
<nikolapdp> yeah crazy thought
<nikolapdp> there is also c code that works with length based strings isntead of null terminated strings
<nikolapdp> radical ideas
<mjg> i had a seen haskelltard claiming c is slow cause you have to keep calling strlen
<zid`> nobody wants to write those
<zid`> There's a mindset that if you're writing in C you have to be OPTIMAL
<mjg> like mofo
<mjg> what
<zid`> abstract string impl? nah, hard-coded strncpies and shit everywhere
<zid`> just in case a compiler from 1978 can't undo the call to the wrapper func with lto
<nikolapdp> don't think that compilers in '78 had lto
<zid`> Exactly.
<zid`> well reading comprehensioned
<nikolapdp> (:
<mjg> if you need the length repeatedly you can just store it
<mjg> idk
<nikolapdp> crazy ideas
<mjg> maybe i should patent real quick
<nikolapdp> no one has ever thought of that before, i don't know, rust came along
<zid`> Like, I've written file parsers, and I just do filebytes[42] and crap, because.. it looks right
<nikolapdp> or *insert your langauge here*
<zid`> but it'd be 100% better if I just wrapped it in a filebyte(bytes, 42)
<vin> I just learnt malloc maintains the size of the allocation malloc_usable_size so you can length of strings without null terminating them!?
<zid`> and bounds checked every access
<zid`> rather than trying to parse fields and juggle section lengths and shit to try not end up outside of bounds
<nikolapdp> vim don't do that
<zid`> but it's PESSIMAL
<mjg> vin: that's not really true
<zid`> to do bounds checking
<nikolapdp> *vin: that's a debug function
<nikolapdp> not meant for users
<nikolapdp> don't use it
<mjg> vin: for the sake of argument let's say you malloc(10), get 16 bytes in total and populate only 10
<mjg> vin: the remaining bytes are arbitrary garbage
<mjg> so ultimately you did not find a hack for the length
<zid`> more importantly, it gives the wrong answer and isn't true of malloc, it's true of 'some glibc impls'
<nikolapdp> and again, it's an internal debug function
<heat> mjg, you're insane if you think memcpy is a good solution to "how to copy C strings"
<heat> for a bounded buffer, even worse
<nikolapdp> sure heat
<heat> cuz you need MIN(a, b)
<mjg> it is a legitimate use
<mjg> mofo, liek, are you even trying to make an argument
<heat> quick, write MIN(a, b) in ISO C
<heat> yes i am, you're reinventing strncmp but worse
<mjg> or just rolling with least favorable interepretation you can
<heat> strncpy sorry
<Ermine> a < b ? a : b
<mjg> dear heat
<nikolapdp> Ermine don't bother, heat is failing to make a point
<mjg> a case where the target buffer is not big enough to hold the string you want to place in there
<mjg> that's something you should know upfront
<heat> Ermine, a < b ? a : b is wrong
<nikolapdp> it's not
<heat> MIN(a++, b++)
<heat> lmfao
<nikolapdp> who said that was a macro
<mjg> MON(--a, b++);
<heat> what else is it going to be?
<heat> a templa-oh wait you don't have that
<nikolapdp> you just type that in
<nikolapdp> and boom it works
* heat facedesks
<mjg> heat are you in heat
<nikolapdp> as in size_t len = a < b ? a : b;
<heat> or as in a++ < b++ ? a++ : b++
<heat> oh wait that doesn't work either :/
<nikolapdp> what point are you even trying to prove here
<mjg> heat, you seem unusually agitated
<mjg> and you mentioned the GF keyword
<heat> that C sucks
<mjg> did you get rejected by an e-girl
<FireFly> isn't that the definition of heat?
<heat> i'm heated yes
<mjg> there is a great writing by PHK of the BSD fame about that
<klys_> #define MIN(a,b) (((a) < (b))? (a) : (b))
<klys_> macro
<Ermine> nikolapdp: I've basically lost the point of conversation so I reply to the latest
<heat> you can't write a MIN() macro, you can't write a MIN() function (for types), you have to be really careful rolling your own
<heat> and this is all for... copying a string to a bounded buffer
<nikolapdp> Ermine: nah don't worry, i just meant that it was pointless to respond
<Ermine> heat: piling operators in a single statements is a way to get musl-level puzzles
<heat> cuhrrect
<nikolapdp> so, don't do that?
xenos1984 has quit [Read error: Connection reset by peer]
<mjg> i'm trying to remember last time i had to copy a string to a too short of a buffer
<mjg> and not know about it
<mjg> hmmmm
<nikolapdp> lol
<mjg> they probably do it over at openbsd tho
<mjg> you know, strlcpy 'n shit
<heat> git grep strscpy or git grep strlcpy on linux.git
<mjg> Documentation/process/deprecated.rst:strlcpy()
<mjg> great fucking top result
<heat> strscpy is the new variant
<heat> ofc strscpy is not standard, neither is strlcpy
<mjg> strlcpy IS standard
<mjg> 8/
<heat> when was that added?
<mjg> maybe last year or so
<nikolapdp> it's not standard i think
<mjg> it was added to posix
<heat> okay so not standard
<nikolapdp> The strlcpy() and strlcat() functions first appeared in OpenBSD 2.4, and made their appearance in NetBSD 1.4.3, FreeBSD 3.3 and glibc 2.38.
<nikolapdp> January 7, 2024
<nikolapdp> from the man
<Ermine> kernel is a freestanding environment though, does it bother with whether funcs are standard?
<nikolapdp> nope
<nikolapdp> you don't even need to bother yourself if you reimplement stuff either
<mjg> oh wait, it landed in glibc and maybe i crossed the wires on it stemming from landing in posix first
<mjg> i remember there was a proposal
op has quit [Remote host closed the connection]
<heat> Ermine, it's a good help if you don't need to roll your own because all the standard functions are garbo
<bslsk05> ​www.austingroupbugs.net: 0000986: Would it be worth investigating adding strlcpy(), strlcat(), wcslcpy() and wcslcat()? - Austin Group Defect Tracker
<mjg> so i grepped for strscpy and the uses i found so far are purplexing
<mjg> buf_len = strlen("initialized=0;enforcing=0;checkreqprot=0;") + 1;
<mjg> rc = strscpy(buf, "initialized", buf_len);
<mjg> are you for fucking real mofo
MiningMarsh has quit [Quit: ZNC 1.8.2 - https://znc.in]
<mjg> or to expand on it
<mjg> const char *on = "=1;", *off = "=0;";
<heat> strscpy and strlcpy are what you use if you want to avoid smashing your stack, yes
<mjg> buf_len = strlen("initialized=0;enforcing=0;checkreqprot=0;") + 1;
<mjg> bro someone was trying to smash the record on most wasteful string creation
<heat> why would anyone use strcpy at all
<mjg> it's literally quadratic
<mjg> rc = strscpy(buf, "initialized", buf_len);
<mjg> rc = strlcat(buf, selinux_initialized() ? on : off, buf_len);
<mjg> rc = strlcat(buf, "enforcing", buf_len);
<mjg> rc = strlcat(buf, enforcing_enabled() ? on : off, buf_len);
<mjg> etc.
<nikolapdp> kek
carbonfiber has quit [Quit: Connection closed for inactivity]
<heat> these are small strings
<mjg> fucking webdev
<mjg> can you concede both strscpy and strlcat in this scenario are not even helpful
<nikolapdp> lol why are you negotiating with him
<heat> i'd always default to bounded over unbounded
<mjg> head did you join a webdev meetup
<mjg> maybe some tech like node.js
<nikolapdp> or bun
<heat> char *buf = malloc(strlen(s) + 1); strcpy(buf, s);
<heat> safe right?
<mjg> no
<heat> how so?
<nikolapdp> malloc fail
<heat> ain't the point
<nikolapdp> not wrong
<mjg> len = strlen(str) + 1;
<mjg> if ((copy = malloc(len)) == NULL)
<mjg> return (NULL);
<mjg> memcpy(copy, str, len);
<mjg> that's how
<mjg> and you don't even have to do it, you can strdup to have it taken care of for you
<nikolapdp> alternatively, stdrup(str)
<nikolapdp> kek
<mjg> you may also notice the string is not getting truncated compared to your previous examples
<heat> strdup isn't standard before C23
<heat> again, C people are anti-useful
<nikolapdp> POSIX.1-2001.
<nikolapdp> good enough for me
<heat> thank you mrvn
<mjg> i have to concede string handling in c is avoidably error prone
<nikolapdp> sure
<nikolapdp> but not nearly as bad as heat would like you to think
<mjg> i just don't think you made a legitimate case with the shorter buffer
<nikolapdp> also, don't forget, his c has classes and lambdas
<mjg> 's liek a big deal if you truncate
<mjg> despite what openbstards like to claim in their strlcpy
<heat> everything in C is error prone and has been since the conception
<zid`> C standards people are pro-C++ and anti-C-usefulness agreed
<mjg> well c is a shite language, who is even disputing that
<zid`> strdup should have been standard in 1991
<nikolapdp> that's not wrong
<heat> mjg, look around
<zid`> now they're like "whaa it's too late and it would clash with existing stuff" on literally anything suggested
<mjg> nikolapdp: are you disputing c is a shite language
<mjg> MOFO
<Ermine> mofo or mofer?
<nikolapdp> i didn't say it wasn't a shit language
<mjg> i would ask zid but we are on mutual ignore
<mjg> did he say something
<nikolapdp> i am saying it's way less shite than some people here claim
<heat> you can't even write a MIN(a, b) macro without footgunning yourself
<zid`> A lot of the shitness in C is trivially resolved in practice, it's just very rarely actually done
<nikolapdp> then don't
<nikolapdp> simple as that
<zid`> not writing MIN as a macro or passing it ++s, etc
<mjg> i'm susprised in rust you don't have to min(a,b).unwrap()
<nikolapdp> it's really not that hard
<nikolapdp> kek
<zid`> but the standard refused to supply it, so now we have to write it as a function, and run into linker issues cus EVERYONE has to define it themselves, etc
<nikolapdp> static inline?
<heat> i agree, functions and macros are overrated
<mjg> unemployment.unwrap().collect()
<heat> do everything manually
<zid`> static means a copy in every .o
<nikolapdp> it's min
<mjg> heat go take a walk or something
<nikolapdp> it's going to be inlined
<nikolapdp> lol
<zid`> and you need the linker to dedup them, but actual linkers don't, afaik
<zid`> pick something vaguely more complicated than min then
* Ermine goes in line
<heat> sigh
* Ermine gives gog a piece of cheese
<mjg> i'm guessing you donated 100 peruvian peso to a female twitch streamer and are not upset she does not want a date
<mjg> or something
<heat> this is not worth it if the ppl involved defend not being able to define a MIN(a, b) without footguns
<mjg> s/not//
<mjg> who the fuck is defending it
<heat> boss, look around
<mjg> macros are well known error prone fuckers
MiningMarsh has joined #osdev
xenos1984 has joined #osdev
<zid`> don't worry, I've yet to see a single C++ user
<nikolapdp> i literally said don't do MIN(a, b)
<zid`> acknowledge that it's shit
<nikolapdp> what are you saying heat
<zid`> At least some C people do, so we win
<nikolapdp> kek
<heat> yes, you're defending not being able to define a basic MIN(a, b)
<mjg> heat: so what's her name
<mjg> is it some pool streamer?
<zid`> good news, you can't do it in C++ either
<zid`> or rust
<heat> c++ has std::min(a, b)
<heat> with TYPESAFETY
<zid`> I said basic
<heat> and LACK OF MULTIPLE EVALUATION
<mjg> std::min(a, b).unwrap
<zid`> not a 40 page template you can't debug without special tools, if at all
<Griwes> zid`, C++ is shit to an extend, but that extend is what came from C or from before like 2008 :V
<zid`> Griwes: and C is shit
<zid`> we should have fixed C first
<heat> template <typename T> T min(T A, T b) { return a < b ? a : b; }
<nikolapdp> what if they are differnt types
<Griwes> yes, C is what caused a lot of C++'s shittiness, yes
<zid`> I was reponding to you saying that
<Griwes> nikolapdp, std::min<desired_type>(a, b)
<zid`> not getting any more basic here
<Griwes> it's funny because I just had to do exactly that to fix an error message minutes ago
<heat> mjg, it's gothamchess!!
<mjg> heat: OH
<zid`> also now I suddenly have to know all the type promotion rules to not run into bugs
<mjg> heat: fuck gothamchess
<zid`> C++ solves nothing
<Griwes> lol
<mjg> dude is a massive twat if you look into it
<zid`> it just moves all the problems around and claims they're intractable
<gog> just use c#
<heat> mjg, what?
<heat> i like gothamchess :(
<zid`> rust solves one half by making everything super strictly typed with no promotions, then fails to be actually a language you can write code in, so you still have no min(), rip
<mjg> so you know the hans niemann drama
<heat> yep
<mjg> dude was farming it big time, typical social media person behavior
<Griwes> chess simp is where it's at
<mjg> but when called out on it he lied and claimed otherwise
<mjg> he said was just trying to help hans
<mjg> that's why all the content
<mjg> dude is also best buds with nakamura, which is a known twat
<heat> he's typically pretty transparent
<heat> with i.e carlsen content farming
<mjg> no, he is lying in a way which appears transparent
<Griwes> you know who's not lying? chess simp
<mjg> admit this and that in a positive light, get some credibility
<mjg> Griwes: is that an actual person? like what are you even saying man
<Griwes> chess simp doesn't have anything to admit!
<bslsk05> ​playlist 'Chess Simp - Videos' by Chess Simp
<Ermine> good that conversation has moved to chess
<mjg> heat: here is a funny bit: majority of highly popular social media personalities would think LKML is tame
<mjg> heat: as far as their private interactions go
heat has quit [Read error: Connection reset by peer]
<mjg> ye so chess is PESSIMAL
heat has joined #osdev
<Griwes> maybe that's because LKML is just the public interactions
* mjg burops
<mjg> for example there is a saying that "everyone has a hikaru story"
<mjg> day to day dude passes as a run of the mill socially inept nerd
<mjg> but when people are not looking the real shithead comes out
<heat> LKML is only tame if you're numb to people telling you to fucking die every day
<zid`> once a year
<heat> so yes, popular ppl on social media would thing it's tame
<zid`> if you do dumb shit where you should just fucking die
<zid`> lol, have you seen social media
<zid`> it is 100% death threats and nazis
<mjg> i mean the popular social media people act precisely like that
<mjg> when they think they can get away with it
<heat> anyway yes hikaru is a shithead
<mjg> one dude which probably is not is john bartholomew
<heat> however, i don't think gothamchess is an ass, even by your description of his shenanigans
<mjg> you are entitled to your assesment
<Griwes> hehe, ass-esment
<heat> ASS
<mjg> ther is this funny saying tho: "never meet your idols"
<heat> subscribe for more hot takes
<Griwes> hehe-ass esment
<mjg> heat: ey you presumably know finegold
<heat> hehe?
<mjg> what do you think about that one
<heat> woah calm down michael jackson
<heat> mjg, finegold is kind of an ass but a transparent one
<mjg> see, i think finegold is not an ass whatsoever
<mjg> just has a certain style
<mjg> he is not lying about shit afaics
<mjg> for one
<heat> in the middle of le epic sarcasm he can actually be an ass
<mjg> instead talks mild shit about people and himself
<mjg> as far as i know he puts everyone down, most notably himself, so
<mjg> you may not like it, but i don't think that's ass
<mjg> in contrast if he was dishing out, but complaining about someone dishing at him, that would be a different story
<heat> that's why i said kind of
<heat> i don't think he's a total ass, just a little bit
<heat> you know, like linus
<heat> he's linus-post-2017 level ass
<mjg> you guys are on first name basis?
<heat> sorry
<mjg> i thought you are only like that with theo
<heat> like the L man
<mjg> OH that guy, ye
<mjg> now i get it
<sortie> https://www.youtube.com/watch?v=c-sspyeKFjI&feature=sortie ← Did Dua Lipa just write a song about me?
<bslsk05> ​www.youtube.com: French Exit - YouTube
<heat> yes
<mjg> i had dealings with a fucking fanboy who "linus this", "linus that" i have some aversion to the name
<heat> why's it unavailable?
<sortie> psst wanna deal
<sortie> heat, you're having a mild case of WEST
<heat> mjg, i mean, coloquially ppl call him linus not torvalds
<mjg> i heard
<sortie> heat: Try be french and live C'EST
<heat> oui
<mjg> i am saying there was a twat who would not shut up about him
<sortie> (Or wait 36 minutes)
<mjg> and who as far as i know never even sent an email that the L man read
<mjg> ooh i get it
<mjg> the e-girl is andrea botez
<sortie> Hey man I hear you holding Torvalds ppst wanna deal
<mjg> yo uhave poor taste
<heat> oh god not andrea
<heat> she's too loud
<sortie> <mjg> ther is this funny saying tho: "never meet your idols" ← I have a counterpoint: That's called Thursday.
<mjg> what, you met rob pike or something? ;)
<mjg> heat: i thought the other one is too old for you
<heat> oh huh andrea is my age
<heat> cool
<mjg> ye so the date did not go well, did it
<mjg> to my undestanding she is like a senior PHP dev at chess
<mjg> can demolish people who don't play but below competency level vs anyone good
<heat> funny actually, they've been on a tournament these last few days
<heat> i idle watched yesterday
<mjg> that's when you deciced to ask her out
<heat> obviously
<mjg> she sounds like a 40 y/o alcoholic
<mjg> for
<mjg> real
<heat> i have to say, 1800 classical is unbearable to watch
<mjg> well it is way above what almost everyone who touched the game will ever reach
<heat> it is not nearly as precise as IM or GM
<mjg> oh ye
<heat> correct, but around the GM level they see lines in the engine and the guy does it
<mjg> you are the guy in the chat aren'ya
<mjg> claiming whoever is playing is trash
<heat> at the 1800 level they play slightly imprecisely
<mjg> so for example i was watching the candidates
<heat> it's not tremedously poor, but it's sus
<mjg> well, not a chess player myself, but from what i'm told real chess competence starts around 2200 or so
<mjg> and even then you are terrible compared to the top
<heat> yeah
<heat> i mean the M man destroys most GMs
<heat> super GMs even
<mjg> you can spell out Magnus, it's ok
<Griwes> Carlos Magnusson
<mjg> Bobby Morphy is the OG chad
<heat> paul fischer
<mjg> there is a great dude "andras toth"
<mjg> retired IM who is actively coaching and posting educational content
<mjg> likes to talk mild shit which i find enjoyable
<heat> i'm tired of learning
<heat> finegold has great educational content though
<mjg> 600 chess.com is a respectable rating for you to retire at
<heat> like a whole 1hr course on the sicillian
<mjg> i'm happy you reached your goals
<heat> hey, i don't play chess.com
<mjg> then 800 lichess.org
<heat> i play lichess 😎😎😎
<heat> FOSS!
<mjg> what's your username
<mjg> why_do_i_suck?
<mjg> OnyxDev?
<heat> i don't remember
<heat> i play exclusively without being logged in now
<mjg> so it is rated < 1000
<mjg> even full stack node.js devs would think it's funny
<heat> if i have no rating and no real stake on the games i don't get too pissed
<mjg> serious q, you take losing seirously?
<heat> oh absolutely
<heat> i hate hate hate losing
<mjg> well that's a bummer
<heat> on anything
<mjg> you are expected to lose about half of the games (and i'm including existence of draws here)
<mjg> so
<heat> yep
<mjg> maybe you should seek another endeavor
<mjg> so you are pissed becuase you got scholar mated?
<heat> ofc
<mjg> and not because of andrea?
<mjg> so i was playing hyperbullet in berserk mode and some twat was talking shit to me after losing, was that you?
<heat> i only play bullet
<mjg> rly?
<heat> but seriously i don't talk shit after losing
<mjg> too angry to type?
<heat> i'm not a sore loser, i just hate losing
<heat> it pushes me
zetef has joined #osdev
<mjg> serious about bullet?
<mjg> at least it comes with built-in excuses
<mjg> "bad premove"
<heat> no i don't care about bullet with my unrated acc
<heat> well, !acc
<mjg> i am asking if you genuinely only play bullet
<heat> yes
<mjg> it is funny to watch at high level
<mjg> when they enter a scramble
<heat> everything else feels too serious and in that case i can log in and start playing real matches (and get real mad over time)
<heat> blitz i can also tolerate
<mjg> 3+0?
<mjg> look mofo, real men only play hyperbullet or classical
<heat> lichess classical is funny
<heat> i feel weird playing classical cuz i can't calculate too much, because i'm bad
<mjg> if i wanted to calculate i would have been born as cassio
<heat> casio
<heat> i'm a ti nspire cx
<mjg> cassio is the italian vairant
<heat> the cx 2 calculators have PYTHON
<mjg> 8S
<mjg> what fucking cpu is in there
<mjg> sounds like you are carrying an itanium rack
<heat> ARM9-26EJ-S
<heat> i don't have a cx2, that's too new, i only have a cx
<heat> it is amusing to see that across the nspires they use the same ARM9 core, just with higher clocks
<heat> 15 bucks gets you a quad-core cortex-a53, and the nspires are 200 bucks each
<heat> i've been getting random OOPSes from time to time, probably time to test RAM and see if its all okay
<heat> upstream has been buggier than usual though
<zid`> heat: did you get your kkk hat out and whip yourself this week?
<heat> what
<zid`> capirote
<zid`> The fuck kind of iberian are you
<heat> what tf is that
<heat> oh that was spain-only apparently
<zid`> can't even afford kkk hats in poortugal :(
<zid`> Think of how much racism they could do with proper funding!
<nikolapdp> real racism is the friends we've made along the way
<zid`> I have to make friends to be racist now? fucking raising the bar on me
<nikolapdp> no, that's the consequence
<nikolapdp> not the cause
<nikolapdp> or prerequisite rather
<zid`> journey + friends -> racism
<zid`> so no friends no racism
<nikolapdp> ):
<nikolapdp> more like racism -> journey + friends
<zid`> No, if that were the case, heat would have left porutgal and have friends
<nikolapdp> ah you're right
<geist> what the heck is everyone going on about?
<geist> i look away for an hour
<heat> i was talking about how the nspire cx 2 has python and uses an arm9
<heat> which is bizarre, i'd love to know where the $199 are going to
<heat> i guess they could make an argument for battery life but... yeah i don't really buy that why is that calculator so expensive
<nikolar> Is that an arm board heat
<heat> its a graphing calculator
<nikolar> Ah fancy and overpriced
<heat> they are all extortionally priced and i'm pissed to find out it's literally an ARM9 cpu
<heat> ARM9, not armv9
<nikolar> Lol
<geist> hey at least it’s an ARM. the TI stuff stuck with z80s far longer than they should have
<childlikempress> what's wrong with z80
<geist> nothing really. jhust that heat is complaining about old cores
<heat> these are new things with high prices using old cores, that's my problem
<nikolapdp> also z80 is discontiued
<nikolapdp> rip
<heat> they have this line of calculators since 2011 and they literally didn't change the chip, just clocked it higher
<nikolapdp> maybe you can still find a 6502 based calculator
<zid`> do you can still buy fakes
<zid`> dw*
<nikolapdp> why would you change the chip
<nikolapdp> that's a lot of code changes you need to make
<nikolapdp> just clock it higher
<nikolapdp> profit
<heat> so graphing a function doesn't take ages, probably
<heat> the ti-84 was z80 though
<heat> i guess they left the z80 in the monochrome world
<Bitweasil> ... man, back in the day, some high school friends and I overclocked a TI-85, and I can't recall if we bricked a TI-83 or not trying to overclock it.
<Bitweasil> Had a toggle switch for the oscillator, you could literally watch the graphs go faster when you flipped it.
<Bitweasil> (and made most games unplayable in the deal)
netbsduser` has quit [Ping timeout: 256 seconds]
<nikolapdp> kek
<heat> i'm going to make a calculator of my own
<heat> and i'll use floats because i'm not a mathmatician
<heat> it'll be awful, but it'll be FAZT!
<zid`> add a quake 3 button
<zid`> that does fast inverse sqrt
<heat> the kids will love using a calculator that can only do up to DBL_MAX
Turn_Left has quit [Read error: Connection reset by peer]
<zid`> and skips numbers all the time
<heat> oh i guess DBL_MAX isn't that low huh
<heat> 1.7976931348623157E+308
<zid`> I knew it was e308
<zid`> but not the 1.7 bit
<heat> FLT_MAX is e38, LDBL_MAX is e4932
<heat> i think the nspire can only do up to e100 sooooooooooo
<heat> i'm starting to think these ti people are stealing a living
<zid`> to be fair, that's 100 entire bytes of ram if they're using string math
<zid`> hopefully they're doing BCD and it's actually only 50
<heat> don't forget the fractional part
<heat> 200 bytes?!
<zid`> but.. there is no fractional part in e notation
<zid`> it's all fractional, if you want fractional, you need a different base
<zid`> ^ good sentence
<heat> okay i was wrong, it can do up to e1000 and e-1000
<zid`> That's better
<zid`> how many ULPS
<zid`> going to need you to key in a test suite
<heat> idk
<zid`> even proper calculators tend to have a bunch of buggy bad implementations of various ops
<heat> i think the battery is a bit fucked after not being used for 4 years
<zid`> plus they tend to lie if you use approximations
<zid`> like if you do 22/7 with enough digits they'll just print "pi", cus that's how they do expressions
<zid`> it's not rigorous it's just doingcmp
<heat> nah 22/7 isn't pi on mine
<zid`> >with enough digits
<heat> 22/7 is 22/7 until it's 3.14286
<zid`> 11^6/13 gives 156158413/3600* pi
<zid`> on a casio
<zid`> for example
<zid`> It can factor out a pi without leaving lots of decimals so it just goes hurr durr must be pi * something
<nikolapdp> kek