←2023-03-22 2023-03-23 2023-03-24→ ↑2023 ↑all
00:00:03 <int-e> err
00:00:10 <int-e> 2^48 bytes, 48 bits addresses
00:00:48 <shachaf> mmap has its own problems, though.
00:00:56 <int-e> of course
00:01:09 <int-e> computers don't have free lunches
00:01:14 <int-e> or offer
00:01:33 <shachaf> I think few programs that use mmap to read a file correctly handle the case where the file is concurrently truncated while reading.
00:01:56 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
00:01:58 <shachaf> (Where you get a SIGBUS.)
00:02:16 <int-e> don't do that then (tm)
00:03:24 <int-e> And won't that also be a problem if you manage positions in userspace?
00:04:05 <shachaf> I mean, it's possible to handle in both cases.
00:04:09 <int-e> though I guess with a far nicer channel for the error
00:04:19 <shachaf> But one will just return an error from a particular call, and the other will raise a global signal.
00:04:43 <shachaf> If Linux had local signal handlers like Windows that could make handling nicer in this case.
00:22:22 <fizzie> I think they're up to 57 bits of address space now.
00:23:04 <int-e> hmm, all usable by userspace?
00:23:21 <fizzie> I don't know about operating systems, but hardware-wise, on x86-64, by https://en.wikipedia.org/wiki/Intel_5-level_paging
00:24:18 <zzo38> I think one benefit of the current file offset being a part of the OS file API is so that the same API can be used for files and for pipes.
00:24:33 <int-e> Ah. Another 9 bit level on top of those 48 bits would do it indeed.
00:25:23 <fizzie> (Intel-only, maybe? On my relatively modern 3000-series Ryzen, /proc/cpuinfo says "43 bits physical, 48 bits virtual".)
00:28:16 <int-e> Hmm, a quick search found nothing more recent than https://www.phoronix.com/news/AMD-5-Level-Paging-KVM
00:28:54 <int-e> I imagine demand for that isn't too big yet.
00:29:36 <fizzie> Here's something I learned about Plan 9 the other day: it has (at least) two uncommon file mode bits, which make it possible at the filesystem permissions level to mark files as "append-only" (ignores offsets in all writes and places the data at the end of the file) and "exclusive use" (may be opened by at most one client at a time). Supposedly convenient for log files.
00:34:11 <zzo38> Append-only is something that I had thought before too
00:49:41 -!- chiselfuse has quit (Remote host closed the connection).
00:49:53 -!- chiselfuse has joined.
01:06:00 <esolangs> [[Special:Log/newusers]] create * EZcoder3000 * New user account
01:20:02 -!- genpaku has quit (Remote host closed the connection).
01:20:11 <esolangs> [[4Head]] N https://esolangs.org/w/index.php?oldid=107592 * 1hals * (+1561) create this page
01:22:35 <esolangs> [[4Head/AuthorImplementation.c]] N https://esolangs.org/w/index.php?oldid=107593 * 1hals * (+6149) create C implementation page
01:23:07 <esolangs> [[4Head]] https://esolangs.org/w/index.php?diff=107594&oldid=107592 * 1hals * (+32) Add a link to my implementation
01:27:59 -!- simcop2387 has joined.
01:29:30 -!- perlbot has joined.
01:31:57 <FireFly> fizzie: hm interesting
01:32:14 <FireFly> append-only as a filesystem permission... makes a lot of sense really
01:51:55 <b_jonas> fizzie: I think linux's ext driver has that too
01:52:10 <b_jonas> the append-only bit that is
01:54:31 <b_jonas> see https://man7.org/linux/man-pages/man1/chattr.1.html , the attribute a is append-only, supported by the ext4 driver
01:55:58 <b_jonas> I don't think there's an "exclusive use" thing as such, but there's kind of a bit for mandatory locks where you can lock the file for exclusive use, see https://man7.org/linux/man-pages/man2/fcntl.2.html under "Mandatory locking", it just doesn't work very well
01:56:26 <b_jonas> honestly that sounds much less useful than append-only
01:56:46 <b_jonas> append-only you can imagine like when you send log files to a line printer so they can't be modified easily later
01:57:07 <b_jonas> of course an alternative is sending the log lines to another computer that stores them
01:57:22 <zzo38> Linux also has leasing, although that does not prevent accessing the file for very long. You can lease a file that you are writing to so that if anyone reads it, you can ensure that the file is written before anyone else reads it
01:59:09 <b_jonas> right, it's just that there's usually no point for that or mandatory locking, because locking doesn't work well when only one party uses locks, the other party could already have started to access the file before you lock it
01:59:33 <b_jonas> these are implemented because they are something the kernel can do, but they aren't practically useful
02:01:53 <zzo38> Yes, although if the operating system is designed differently then there are ways to be done using transactions, etc. (I had ideas relating to operating system design, and one of them is transactions for I/O capabilities including multiples at once)
02:02:23 <zzo38> (Since, one at a time may be insufficient)
02:04:37 <esolangs> [[Codon]] https://esolangs.org/w/index.php?diff=107595&oldid=107586 * Dtp09 * (+210)
02:05:42 <b_jonas> zzo38: even so most of the time both processes that access the file need to be aware of transactions and access the file with them, and you can already use locking to emulate such transactions in user-space.
02:06:11 <b_jonas> kernel support for transactions, which I think Windows has to some extent, can be nice, but I think it's orthogonal to the mandatory locking thing
02:07:37 <esolangs> [[Codon]] https://esolangs.org/w/index.php?diff=107596&oldid=107595 * Dtp09 * (+81)
02:15:11 <zzo38> You may be right, but depending how the operating system and also how the program is designed (and on which kind of security features you intend), you can improve some uses.
02:53:38 <zzo38> What are your ideas relating to operating system design (including low-level and high-level features)? (Whether or not they are compared to other operating systems, and whether or not they could be added on to another one)
03:05:48 -!- razetime has joined.
03:46:30 -!- razetime has quit (Ping timeout: 265 seconds).
03:56:14 -!- lagash has quit (Quit: ZNC - https://znc.in).
04:03:13 -!- lagash has joined.
04:22:53 -!- razetime has joined.
04:48:32 -!- lagash has quit (Quit: ZNC - https://znc.in).
04:53:55 -!- lagash has joined.
05:29:58 -!- Sgeo has quit (Read error: Connection reset by peer).
05:32:14 -!- Sgeo has joined.
05:39:51 -!- lagash has quit (Quit: ZNC - https://znc.in).
05:46:20 -!- slavfox has quit (Quit: ZNC 1.8.2 - https://znc.in).
05:50:24 -!- slavfox has joined.
06:24:01 -!- bgs has joined.
06:27:35 -!- lagash has joined.
06:31:31 -!- razetime has quit (Ping timeout: 240 seconds).
06:33:13 -!- Sgeo has quit (Read error: Connection reset by peer).
06:36:06 -!- Sgeo has joined.
06:51:21 -!- A_Dragon has quit (Ping timeout: 624 seconds).
06:58:57 -!- razetime has joined.
07:11:06 -!- razetime has quit (Quit: See You Space Cowboy).
07:11:34 -!- lagash has quit (Quit: ZNC - https://znc.in).
07:12:27 -!- lagash has joined.
07:35:55 -!- Sgeo has quit (Read error: Connection reset by peer).
07:40:37 -!- tromp has joined.
07:45:27 -!- A_Dragon has joined.
07:57:39 -!- lagash has quit (Quit: ZNC - https://znc.in).
08:10:22 -!- lagash has joined.
08:12:55 -!- razetime has joined.
08:33:23 -!- tromp has quit (Read error: Connection reset by peer).
08:33:51 -!- lagash has quit (Quit: ZNC - https://znc.in).
09:05:18 -!- lagash has joined.
09:50:40 -!- lagash has quit (Quit: ZNC - https://znc.in).
09:51:58 -!- __monty__ has joined.
11:09:09 <esolangs> [[Codon]] https://esolangs.org/w/index.php?diff=107597&oldid=107596 * Dtp09 * (-53) /* Syntax */
11:22:36 -!- razetime has quit (Quit: See You Space Cowboy).
11:51:03 -!- slavfox has quit (Ping timeout: 255 seconds).
11:57:53 -!- slavfox has joined.
12:08:01 -!- slavfox has quit (Ping timeout: 240 seconds).
12:10:45 -!- slavfox has joined.
12:20:44 <esolangs> [[Codon]] https://esolangs.org/w/index.php?diff=107598&oldid=107597 * Dtp09 * (+4)
14:25:26 <esolangs> [[Codon]] https://esolangs.org/w/index.php?diff=107599&oldid=107598 * Dtp09 * (+1) /* Opcodes */
14:30:16 -!- wpa has joined.
14:31:20 <esolangs> [[Codon]] https://esolangs.org/w/index.php?diff=107600&oldid=107599 * Dtp09 * (-10) /* Opcodes */
14:32:22 <esolangs> [[Codon]] https://esolangs.org/w/index.php?diff=107601&oldid=107600 * Dtp09 * (-14) /* Syntax */
14:34:31 -!- Lord_of_Life has quit (Ping timeout: 240 seconds).
14:35:59 -!- Lord_of_Life has joined.
14:37:05 -!- razetime has joined.
14:49:37 -!- Sgeo has joined.
15:02:24 <esolangs> [[Codon]] https://esolangs.org/w/index.php?diff=107602&oldid=107601 * Dtp09 * (+819) awesomesauce
15:35:44 -!- wib_jonas has joined.
15:37:06 <wib_jonas> on the wiki, should [[Category:Implemented]] apply to a language if there's a credible claim that there is or was a working implementation, even if we can't get a copy of that implementation, such as with BANCStar? I'm asking because I found another language where this may be the case
15:38:32 <wib_jonas> I'm thinking of contacting the programmer and asking for a copy. But I'm somewhat scared because the person who claimed that he'll try to get the BANCStar interpreter from some old floppies disappeared, with only a user on github with recent commits remaining, and I don't want to vanish like that.\
15:41:30 <wib_jonas> never mind, I found the interpreter, it was merely misplaced, not entirely missing
15:49:22 <FireFly> how do we still not have a bancstar implementation..
15:49:54 <FireFly> feels like surely one must've remained from the 90s, it's not _that_ long ago and was like, used in industry
15:51:53 <wib_jonas> FireFly: either because the user who tried to get one got distracted and forgot about it and none of us tried to contact them (eg. through github), or because the floppy was unreadable. the more sinister possibility is that that user sent a copy to mroman but that caused mroman to disappear, but there's evidence against this because mroman
15:51:53 <wib_jonas> disappeared way too late for that
15:52:19 * FireFly nods
15:52:25 <wib_jonas> also right now I'm trying not to disappear after I said I have a copy of this other language
15:52:30 <wib_jonas> implementation
15:52:39 <FireFly> best of luck with not disapperaing!
15:52:42 <wib_jonas> because I realize what it looks like from your site
15:56:26 <wib_jonas> quick question. if a C function delcares a local variable of char type but doesn't initialize it like `char foo;` then in some code path it doesn't initialize it and then runs onto an if statement like `if (foo) yesfoo(); else nofoo();` then does that code path cause undefined behavior on the C level?
15:56:38 <wib_jonas> (yes, I'm reading typical 90s code)
15:59:46 -!- joast has joined.
16:04:00 <fizzie> C11 "If the lvalue [undergoing lvalue conversion, i.e., being read] designates an object of automatic storage duration that could have been declared with the `register` storage class (never had its address taken), and that object is uninitialized --, the behavior is undefined."
16:05:22 <wib_jonas> ok, looks like it is UB. not too surprising in a 1990s program, just wanted to know for sure
16:06:39 <fizzie> If you *do* take its address somewhere, then that rule won't apply, and (I think) it merely has an indeterminate value, and whether it is (or could be) undefined behavior depends on whether the type in question has any trap representations. If `char` is an unsigned type, it can't have any. If it's signed, it might, unless that's specifically disallowed for the character types.
16:07:42 <wib_jonas> fizzie: I presume in that case some other similar rule might apply, about uninitialized memory
16:10:18 <fizzie> Maybe, but I don't think there is a similar general "automatically-undefined" rule about reading uninitialized memory. `malloc` in particular is explicitly called out to give you "an object -- whose value is indeterminate".
16:10:44 <fizzie> (An indeterminate value is either an unspecified value or a trap representation.)
16:12:00 <fizzie> And indeed (per C11 6.2.4p6-7) the initial values of uninitialized objects are also indeterminate.
16:12:06 <wib_jonas> ok. malloc can be a problem elsewhere, but not for this function-local char variable
16:15:52 <fizzie> There *is* a non-normative note in J.2p1 that "-- behavior is undefined [when:] The value of an object with automatic storage duration is used while it is indeterminate", with no additional qualifiers. But the normative sections it refers to are 6.2.4, 6.7.9 and 6.8, and I don't think any of those make it, shall we say, "unconditionally undefined".
16:16:19 <fizzie> (Accessing it if it does happen to be a trap representation is undefined, of course.)
16:17:15 -!- lagash has joined.
16:31:39 <esolangs> [[Codon]] M https://esolangs.org/w/index.php?diff=107603&oldid=107602 * Dtp09 * (-1) /* Opcodes */ spellong error
16:37:07 <esolangs> [[Legasm]] N https://esolangs.org/w/index.php?oldid=107604 * B jonas * (+3207) Created page with "The '''Legasm''' Virtual Machine is a RISC virtual machine implemented in software, invented by Philippe Clavel and [[David Madore]] in 1998. The machine was originally intended to serve some purpose in the Legendes II game engine, but eventually got abandonned, then la
16:39:36 <esolangs> [[David Madore]] https://esolangs.org/w/index.php?diff=107605&oldid=94169 * B jonas * (+13) [[Legasm]]
16:40:33 -!- lagash has quit (Quit: ZNC - https://znc.in).
16:40:34 <esolangs> [[Legasm]] https://esolangs.org/w/index.php?diff=107606&oldid=107604 * B jonas * (+22) /* Links */
16:40:43 <esolangs> [[Language list]] https://esolangs.org/w/index.php?diff=107607&oldid=107549 * B jonas * (+13) [[Legasm]]
16:44:27 <wib_jonas> documented. hopefully someone downloads the implementation from http://www.madore.org/~david/legendes/versions/l980904.tgz as insurance against me disappearing
16:44:47 -!- lagash has joined.
16:44:57 <wib_jonas> I find it funny how this machine has 256 registers, of which all but the 8 bottom and 16 top ones are general-purpose registers
16:47:31 -!- wib_jonas has quit (Quit: Client closed).
16:58:18 <esolangs> [[While(true)]] M https://esolangs.org/w/index.php?diff=107608&oldid=94260 * Aonodensetsu * (+0) new link
17:04:22 <fizzie> Oh no, wib_jonas disappeared.
17:04:27 <fizzie> The conspiracy got to them.
17:35:13 -!- razetime has quit (Remote host closed the connection).
18:05:12 <b_jonas> no, he's still there
18:06:03 <esolangs> [[Legasm]] https://esolangs.org/w/index.php?diff=107609&oldid=107606 * B jonas * (+82) carry bit
18:10:52 -!- lagash has quit (Quit: ZNC - https://znc.in).
18:20:46 -!- lagash has joined.
18:44:16 -!- lagash has quit (Quit: ZNC - https://znc.in).
18:44:26 -!- lagash has joined.
19:07:02 -!- lagash has quit (Quit: ZNC - https://znc.in).
19:08:28 -!- lagash has joined.
19:14:48 <zzo38> I think LLVM has a "freeze" instruction to force something to have a value even though it was undefined, without needing to specify what value.
19:16:42 -!- ManDeJan has quit (Write error: Connection reset by peer).
19:16:43 <zzo38> About BANCStar and [[Category:Implemented]], I should think that the implementation should need to be known in order to use that category. However, if an implementation of BANCStar is found, then perhaps some of the things that were guessed, we can figure out which guesses are correct and incorrect, and which things were previously not known, might have possibility to figure out
19:19:16 -!- ManDeJan has joined.
19:32:13 -!- lagash has quit (Quit: ZNC - https://znc.in).
19:33:21 <b_jonas> zzo38: ok, but what does "known" mean? for example, if you can buy the implementation but it's rather expensive, imagine Matlab or Mathematica or Dyalog APL but without student discounts or trial versions, does that count as known?
19:35:46 <b_jonas> or if eg. we have a copy of the interpreter, but it only runs on some rare ancient hardware for which we don't have working hardware or emulator, or only runs on a very expensive Playstation 6, or in Adobe Flash
19:38:04 <b_jonas> or only on windows-based mobile phones or whatnot
19:38:27 -!- lagash has joined.
19:39:37 <b_jonas> I guess if it only runs on PS6 then we just wait for ten years, which is not that long for the esolangs community, and the problem solves itself because by then people will both make emulators and figure out how to dump games on that console
19:39:44 <b_jonas> and then we tag
19:47:26 <zzo38> I think that you could count all of the situations that you describe as "known", although perhaps it might be sensible to define a separate category for implementations which are not commonly accessible due to reasons such as that, maybe. (But, then, how to decide exactly the line, if any?)
19:49:57 -!- wpa has quit (Quit: Connection closed for inactivity).
19:50:09 <b_jonas> zzo38: in questionable cases we can just not apply any tag
19:50:42 <b_jonas> and yes, I don't know of any esolangs with a weird implementation status right now, but if I can imagine it then someone can make an esolang that's deliberately like one of these
20:14:35 <river> I just re-read isaac asimov the last question
20:15:26 <b_jonas> hmm, did I prompt that with the 2**63 seconds thing?
20:44:41 -!- lagash has quit (Quit: ZNC - https://znc.in).
20:44:52 -!- lagash has joined.
21:28:47 -!- lagash has quit (Quit: ZNC - https://znc.in).
21:29:01 -!- lagash has joined.
21:52:23 -!- lagash has quit (Quit: ZNC - https://znc.in).
21:52:44 -!- lagash has joined.
22:15:59 -!- lagash has quit (Quit: ZNC - https://znc.in).
22:16:29 -!- lagash has joined.
22:40:58 -!- Sgeo_ has joined.
22:43:43 -!- Sgeo has quit (Ping timeout: 276 seconds).
22:46:23 -!- Sgeo has joined.
22:46:49 -!- __monty__ has quit (Quit: leaving).
22:48:06 -!- Sgeo_ has quit (Ping timeout: 268 seconds).
22:50:55 -!- tromp has joined.
23:01:06 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
23:01:31 -!- Sgeo has quit (Ping timeout: 240 seconds).
23:09:17 -!- Sgeo has joined.
23:41:59 -!- lagash has quit (Quit: ZNC - https://znc.in).
23:46:22 -!- lagash has joined.
←2023-03-22 2023-03-23 2023-03-24→ ↑2023 ↑all