00:17:02 -!- Lord_of_Life_ has joined.
00:17:41 -!- Lord_of_Life has quit (Ping timeout: 244 seconds).
00:18:22 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
01:11:39 <int-e> Hmm, maybe chroma isn't quite as impossible as it seemed at first...
01:15:29 <b_jonas> int-e: it's good when a puzzle feels that way
01:15:53 <int-e> I still wish the levels were smaller though
01:16:45 <int-e> Simply because I prefer solving ten small levels in two hours than solving one big one.
01:16:54 <zzo38> What size do you want?
01:17:53 <int-e> something where solutions are 50-200 moves rather than 500-2000 :P
01:18:28 <int-e> Anyway, progress: https://int-e.eu/~bf3/tmp/chroma.png
01:22:35 <zzo38> I prefer Hero Hearts myself (some levels do need 2000 moves or more, but many need many less moves). I also like to make up my own levels and classes of objects
01:25:44 <zzo38> You can also try to make up your own smaller levels in Chroma too I suppose, if you want to do
01:26:44 <zzo38> These are of a class of puzzle games involving grid based turn based level based puzzle games with deterministic rules
01:26:55 <zzo38> Which others are there? Probably there are many
01:37:50 <int-e> there are a ton of sokoban derivatives
01:40:04 <zzo38> Yes, there are many games like that, but do you have a list? There is also some game where there isn't pushing other objects around but still meets the other criteria
01:43:28 <zzo38> (Also have you made up your own?)
01:46:53 <int-e> No, I don't have a list. A Monster's Expedition, Fish Fillets, XSok, small ones like Vertebrae, 5 Step Steve... there are many more that I forgot. And many games have (easy) Sokoban puzzles as minigames.
01:48:19 <int-e> and "grid-based" is too broad to even consider an enumeration... it includes stuff like Rush Hour which has moving pieces but no agent. Even the 15 puzzle is grid-based.
01:48:35 <zzo38> Another game I have played is Sokoball, which is similar to Sokoban in some ways, but once a box is placed on a target, the box disappears so that you can now walk over it and put another box there too; there are also some new pieces such as arrows to walk only one way, and tiles that cause all other tiles in a line with it ti slide toward you, etc.
01:48:52 <int-e> Though I guess in that case you can think of the empty space as the agent.
01:49:12 <int-e> (With the power to swap places with an adjacent piece)
01:49:25 <int-e> And no, I have not tried to make my own puzzles.
01:49:35 <zzo38> Xsok is more general in that you can define your own kind of pieces, although it is rather limited.
01:52:43 <zzo38> There is a Game Boy Advance game called "Brain N Bells"; I have the source code too. That game has no pushable objects (although since the source code is available, such objects could be added).
01:53:26 <oerjan> int-e: it seems we will very soon see whether my guild hall theory is correct
01:54:38 -!- SGautam has quit (Quit: Connection closed for inactivity).
01:55:23 <int-e> no logistics problem, sadly... those replicas are too good
01:56:22 <zzo38> I want to port Chroma, Brain N Bells, and other games to Free Hero Mesh too. A converter could also be made Xsok -> Free Hero Mesh, maybe (as long as the pictures are square and can be changed to the required palette, if necessary; I haven't checked the palettes). (Maybe better graphics can also be made for Xsok since I think the included ones aren't very good)
01:57:44 <int-e> I guess Baba is You would also make the list. But Recursed wouldn't because it has platforming elements.
01:58:39 <zzo38> Platform elements are accepiable if it still uses a rectangular grid and is turn based rather than time based
02:00:32 <esolangs> [[SRL++]] M https://esolangs.org/w/index.php?diff=89066&oldid=89053 * TheJonyMyster * (+0) bear => beer
02:00:51 <int-e> so if all coordinates are exact pixels...
02:03:10 <int-e> Anyway, no, Recursed has grid-based level layouts but boxes can be pushed horizontally by pixels, and jumping is smooth and there's a timing element to jumps (mainly because you can throw stuff mid jump)
02:06:20 <int-e> err, s/pushed/placed/
02:07:08 <int-e> (you move boxes by picking them up, carrying them to another place, then putting them down; it's not sokoban-like at all, really)
02:21:46 -!- ais523 has joined.
02:22:14 <ais523> I finished writing the world's fastest FizzBuzz: https://codegolf.stackexchange.com/a/236630
02:22:32 <ais523> it has reminded me to complain about the x86(-64) CPUID instruction
02:22:51 <ais523> I'm not sure how it's possible to design an API like that
02:23:22 <ais523> specifically, there are a number of possible CPUID commands, some of which will and some of which won't be implemented on any given CPU
02:24:04 <ais523> they're divided into two sets, "normal" and "extended" (the former have small numbers, the larger have small numbers except with 0x8000000 added)
02:24:41 <ais523> if you try to use a command that isn't implemented, but its number is lower than another command in the same set, it returns all-zeroes
02:25:01 <ais523> if you try to use a command that isn't implemented and its number is *higher* than any other implemented command in the same set, it returns garbage, rather than all-zeroes
02:25:40 <ais523> so you have to use a special CPUID command, CPUID command 0 or 0x80000000, to ask for the highest implemented command, before you can safely call any of the others
02:26:46 <ais523> the CPUs clearly know what their maximum implemented command is – why not make all the unimplemented ones return zeroes, rather than only the commands whose number is less than a particular number that you have to always have to ask for
02:27:29 <ais523> oh, also all these commands have four return values, which they return in eax, ebx, ecx, edx, even though you probably only wanted one of those values (and ebx is a call-preserved register and gets clobbered anyway)
02:28:26 <ais523> the other weird thing is that CPUID does a pipeline flush as a side effect, which is just strange (there are less side-effecty ways to get the same effect, and no particular reason you'd want to do a pipeline flush and CPUID at the same time)
02:29:19 <ais523> maybe it's the oldest way to do a pipeline flush, and the more sensible ways only exist on newer processors
02:30:40 <ais523> …actually, maybe it really is the only way, the other instructions only seem to flush subsets of the pipeline, rather than *everything*
02:30:46 <ais523> still makes no sense though
02:55:25 <ais523> (now I'm wondering why you'd ever want to flush the entire CPU pipeline, rather than just the bits of it you cared about)
03:06:27 <zzo38> Some games include solutions; that is helpful if reimplementing it in Free Hero Mesh since then the autotest mode can be used, to verify that the implementation is correct.
03:06:45 <zzo38> I think that the modern x86 is too complicated designed
03:08:38 <ais523> I don't like how prefix-heavy the instruction set is
03:08:43 <ais523> it isn't Huffman-coded very well
03:09:14 <ais523> also I don't know how to feel about `lea` in particular
03:09:37 -!- sprout has joined.
03:09:49 <zzo38> (I think the old x86 (8088) isn't quite too bad, though)
03:13:14 <ais523> it is obviously possible to do a lot better, but backwards compatibility is an important selling point
03:14:27 -!- sprout has quit (Ping timeout: 260 seconds).
03:26:28 <ais523> …out of all the "move with sign-extension" opcodes, why is 32-bit to 32-bit the one with the shortest encoding? that one isn't even useful
03:26:46 <ais523> and there's a note in the manual saying that you should just use a regular move instead
03:28:21 <ais523> the instruction seems to have been newly added on x86-64, and they picked one of the few one-byte opcodes for *that*
03:29:06 <ais523> (you can prefix it into a 32-bit to 64-bit sign-extend, but it's completely useless without the prefix)
03:41:39 -!- sprout has joined.
03:46:35 -!- sprout has quit (Ping timeout: 260 seconds).
03:49:16 -!- oerjan has quit (Quit: Nite).
03:56:18 -!- dermato has quit (Ping timeout: 260 seconds).
03:57:51 -!- sprout has joined.
03:58:05 -!- dermato has joined.
03:59:47 -!- ais523 has quit (Ping timeout: 264 seconds).
04:02:47 -!- sprout has quit (Ping timeout: 264 seconds).
04:09:53 -!- Hooloovoo has changed nick to Hoolooboo.
04:15:35 -!- sprout has joined.
04:19:41 -!- sprout has quit (Ping timeout: 245 seconds).
05:02:11 -!- Kit has quit (Ping timeout: 264 seconds).
05:02:55 -!- NotApplicable has joined.
05:03:02 -!- sprout has joined.
05:08:00 -!- NotApplicable1 has joined.
05:08:15 -!- sprout has quit (Ping timeout: 260 seconds).
05:09:16 -!- NotApplicable has quit (Ping timeout: 245 seconds).
05:42:16 -!- sprout has joined.
05:47:11 -!- sprout has quit (Ping timeout: 264 seconds).
05:59:24 -!- dyeplexer has joined.
06:17:57 -!- sprout has joined.
07:07:13 -!- immibis has quit (Remote host closed the connection).
07:07:35 -!- immibis has joined.
07:34:10 -!- Sgeo has quit (Read error: Connection reset by peer).
08:03:11 <nakilon> 04:16:45 <int-e> Simply because I prefer solving ten small levels in two hours than solving one big one. -- but the thing is that you sometimes need to drag some item from one room to another one
08:05:49 -!- hendursa1 has joined.
08:05:59 <riv> nice fizzbuzz
08:08:39 -!- hendursaga has quit (Ping timeout: 276 seconds).
08:27:13 -!- sprout has quit (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.).
08:28:23 -!- spruit11 has joined.
08:30:43 -!- Guest95 has joined.
08:32:43 -!- spruit11 has quit (Client Quit).
08:33:41 -!- sprout has joined.
08:36:56 -!- sprout has quit (Client Quit).
08:37:14 -!- sprout has joined.
08:41:18 -!- sprout has quit (Client Quit).
08:42:30 -!- egelbot has joined.
08:44:20 -!- egelbot has quit (Client Quit).
08:45:12 -!- sprout has joined.
08:46:00 <nakilon> the most stupid thing in reddit ban is that I'm unable to add new mods to my cats subreddit -- later they'll just remove it "because being unmoderated"
08:49:50 <nakilon> together with inability to even report content the ban is obviously isn't something to protect the website from something bad but rather opposite -- it's a tool for admins to express their hate and to ruin the community that users build
08:56:29 -!- Guest95 has quit (Ping timeout: 256 seconds).
09:01:52 -!- Guest95 has joined.
09:18:31 -!- hendursa1 has quit (Remote host closed the connection).
09:22:56 -!- hendursa1 has joined.
09:30:45 <riv> that's a shame
09:33:53 -!- Guest95 has quit (Ping timeout: 256 seconds).
09:45:22 -!- dyeplexer has quit (Ping timeout: 260 seconds).
09:52:45 -!- sprout has changed nick to egelbot.
09:55:01 -!- egelbot has changed nick to sprout.
09:59:48 -!- dyeplexer has joined.
10:26:34 -!- nakilon has quit (Quit: rasengan did nothing wrong).
11:09:38 -!- wib_jonas has joined.
11:32:49 -!- tech_exorcist has joined.
12:23:46 -!- dutch has quit (Ping timeout: 252 seconds).
12:27:27 -!- dutch has joined.
12:34:00 -!- arseniiv has joined.
12:35:24 -!- nakilon has joined.
12:46:18 -!- SGautam has joined.
12:55:01 <nakilon> thanks to someone on this channel who mentioned Oracle Cloud -- I've just migrated to there from Yandex Cloud since that doesn't have server Free Tier
13:44:11 -!- NotApplicable1 has quit (Ping timeout: 264 seconds).
13:47:34 -!- Sgeo has joined.
13:51:43 -!- Thelie has joined.
14:15:21 -!- NotApplicable has joined.
14:21:48 -!- Koen has joined.
14:47:59 -!- tech_exorcist has quit (Remote host closed the connection).
14:48:37 -!- tech_exorcist has joined.
14:54:57 -!- hendursa1 has quit (Quit: hendursa1).
14:55:28 -!- hendursaga has joined.
14:58:53 -!- tech_exorcist has quit (Quit: see you later).
15:37:18 -!- tech_exorcist has joined.
16:01:58 -!- Thelie has quit (Remote host closed the connection).
16:09:45 -!- wib_jonas has quit (Quit: Client closed).
16:38:31 -!- arseniiv has quit (Ping timeout: 260 seconds).
16:53:10 <esolangs> [[EPL Main]] https://esolangs.org/w/index.php?diff=89067&oldid=88452 * Aboba228 * (+18) /* Hello, world Program for Windows */
16:53:50 <esolangs> [[Sleep]] N https://esolangs.org/w/index.php?oldid=89068 * PixelatedStarfish * (+34) Created page with "[http://sleep.dashnine.org/ Sleep]"
17:08:22 -!- arseniiv has joined.
17:11:38 <esolangs> [[EPL Main]] https://esolangs.org/w/index.php?diff=89069&oldid=89067 * Timofeyka * (-18) Undo revision 89067 by [[Special:Contributions/Aboba228|Aboba228]] ([[User talk:Aboba228|talk]])
17:14:27 -!- sprock has quit (Ping timeout: 260 seconds).
17:15:18 -!- Koen has quit (Remote host closed the connection).
17:17:26 -!- Koen has joined.
17:31:56 <esolangs> [[Jaune]] https://esolangs.org/w/index.php?diff=89070&oldid=88853 * CoffeeHax17 * (+115) /* Interpreters */
17:40:35 -!- Guest8428 has joined.
17:43:12 -!- Guest8428 has quit (Client Quit).
17:44:01 -!- Koen has quit (Remote host closed the connection).
17:47:28 <esolangs> [[User:CoffeeHax17]] https://esolangs.org/w/index.php?diff=89071&oldid=78797 * CoffeeHax17 * (+55) /* Hi there! */
18:05:54 -!- SGautam has quit (Quit: Connection closed for inactivity).
18:07:14 <esolangs> [[JSMeth]] https://esolangs.org/w/index.php?diff=89072&oldid=89036 * CoffeeHax17 * (+886) Added Tape JavaScript constructor
18:13:09 <esolangs> [[JSMeth]] M https://esolangs.org/w/index.php?diff=89073&oldid=89072 * CoffeeHax17 * (-27) Removed category
18:13:38 <esolangs> [[JSMeth]] M https://esolangs.org/w/index.php?diff=89074&oldid=89073 * CoffeeHax17 * (-2)
18:14:36 <riv> you can make a compiler frmo an interpreter and vice versa
18:15:29 <riv> if our platform is the language B, and the host language is L. let c : B -> L be a compiler, and i : B -> () be an interpreter (not a pure function)
18:16:53 <riv> correction c : L ->
18:16:55 <riv> correction c : L -> B
18:17:34 <riv> given a self interpreter for self : B -> (), then you can do: i'(program) = self(c(program))
18:18:56 <riv> other way, let "i" : L be the source code for the interpreter i, then c(program) = "i"(program)
18:19:15 <riv> so the fake interpreter compiles the program and runs a self interpreter
18:19:26 <riv> the fake compiler just sticks the interpreter and input program together
18:22:21 -!- NotApplicable has quit (Remote host closed the connection).
18:22:39 -!- NotApplicable has joined.
18:25:04 <riv> i guess you can iterate this
18:25:13 <olsner> are you rediscovering the futamura projection?
18:25:30 <riv> take an interpreter and make it worse/slower by adding a level of compilation and self-interpretation
18:28:55 <riv> this is much simpler and easier to implement than futamura
18:29:12 <riv> bbut it makes things worse instead of better
18:31:30 <Corbin> Futamura's reasoning shouldn't require a good specializer. Like, you should be able to make a slow compiler-compiler in the same fashion.
18:32:31 <riv> fair enough
18:38:11 -!- tech_exorcist_ has joined.
18:38:18 * sprout mumbles something about theory and practice
18:38:30 -!- dyeplexer has quit (Remote host closed the connection).
18:38:58 -!- tech_exorcist has quit (Remote host closed the connection).
18:40:32 <riv> say that again clearer?
18:45:08 <sprout> the requirements usually differ for interpreters and compilers. the biggest difference is that for interpreters you usually want zero overhead to start interpreting, compilers it's the opposite
18:45:52 <sprout> right? for a compiler you usually don't care that much that it takes minutes to compile something, with interpreters it's the exact opposite
18:46:08 <esolangs> [[Tiltedc]] M https://esolangs.org/w/index.php?diff=89075&oldid=89055 * Rphii * (+144) /* Disadvantages */ con: file size
18:46:57 <riv> yes that's a nice view
18:47:13 <sprout> though I have to admit something like Haskell seems to be very good at marrying both requirements
18:47:21 <riv> if you measure the overhead of the setup and the execution
18:47:32 <riv> that tells you whether something is an interpreter or compiler
18:47:46 <riv> more overhead in execution means interpreter, more overhead in setup means compiler
18:48:00 <sprout> something like that yah
18:48:05 <riv> never thought about it this way before
18:50:23 <esolangs> [[Tiltedc]] M https://esolangs.org/w/index.php?diff=89076&oldid=89075 * Rphii * (+245) /* Advantages */ pro: looks (and more)
18:50:58 <esolangs> [[Jaune]] M https://esolangs.org/w/index.php?diff=89077&oldid=89070 * CoffeeHax17 * (+2) /* Multiplier */ Replaced code. Previous jaune programme would loop indefinitely for value 1 of 1st cell.
19:01:17 <esolangs> [[Jaune]] https://esolangs.org/w/index.php?diff=89078&oldid=89077 * CoffeeHax17 * (-6610) Removed common lisp implementation code. The source is very long and takes the focus away from the language itself. Please add a link with the source code instead if necessary.
19:18:00 <esolangs> [[JSMeth]] M https://esolangs.org/w/index.php?diff=89079&oldid=89074 * CoffeeHax17 * (+1) /* Real JavaScript implementation */
19:30:20 <b_jonas> sprout: I don't think that's true. you could have a high-level language that is interpreted but also requires significant preprocessing of the whole program.
19:33:40 <b_jonas> riv: just imagine a Haskell interpreter: not only does it have to read the whole program because names can be defined in any order and referenced earlier, but also may have to typecheck the whole program to figure out what instance to use in any one place,
19:33:53 <b_jonas> and if you use enough extensions for Haskell, that typechecking could take a lot of time
19:55:14 <sprout> b_jonas: but then it would fail to meet a simple requirement for an interpreter. which is "start running the program as fast as possible"
19:55:36 <sprout> which is, of course, a requirement I invented. but feels plausible
19:58:14 <b_jonas> you can request that, but not all interpreters can do that, and there can be languages (like Haskell) where it's not possible, probably even esolangs where it's not possible even for a typical program (as opposed to only evil programs in Haskell)
20:03:25 -!- sprock has joined.
20:07:16 <sprout> sure, but then I would argue those aren't interpreters in the conventional/pragmatic sense
20:07:26 <sprout> let's agree to disagree
20:10:53 <b_jonas> sprout: you can certainly say that, I just don't understand the framing where that's the distinction between a compiler and an interpreter
20:12:12 <Corbin> sprout: A fast GLSL interpreter typically compiles to GPU-specific native code before execution, as a counterexample.
20:12:51 <Corbin> Well, your requirement is where "fast" comes from. It's not a theoretical requirement, but one borne from software engineering.
20:13:23 <sprout> it's just an observation. you do care that Python doesn't spend minutes compiling scripts before you run them, for C++ not so much
20:14:31 <Corbin> I suppose that this is one reason why Futamura's projections are nice. They cut through this problem by showing that compilers are specialized interpreters, creating an interpreter-compiler relationship which doesn't care about relative speeds.
20:14:52 <tm512> I wouldn't say that an interpreter has to begin execution as fast as possible. there might be cases where you don't want that, like maybe to achieve improved performance when the code is actually running
20:15:55 <tm512> like it'd be faster to just start interpreting source code directly rather than compiling to bytecode first, but a bytecode intepreter generally achieves better performance after the initial compile overhead
20:16:19 <sprout> I am going to hold my ground on this!
20:16:55 <tm512> for something very simple that's executed often, you might want to skip bytecode compilation, but if it's something that only starts up infrequently and runs for a long while, the extra startup time could be worth the tradeoff
20:17:27 <Corbin> sprout: I agree that, as an engineering principle, an interactive environment ought to be low-latency. But there's just too many counterexamples if we try to make it formal.
20:17:54 <tm512> but with a lot of stuff you can precompile the bytecode, so like a source code or AST interpreter is never really necessary afaict
20:18:14 <Corbin> Suppose that an interpreter sorts its input program somehow before executing (e.g. as in BASIC); would you say that an interpreter is not a real interpreter if it uses a suboptimal sorting algorithm?
20:18:19 <sprout> Corbin: apart from some general observation that there's some trade-off there possibly
20:19:27 <sprout> something about all abstractions go wrong
20:27:34 -!- NotApplicable has changed nick to Kit.
20:34:54 -!- tech_exorcist_ has quit (Quit: see you tomorrow).
21:39:03 -!- sprock has quit (Ping timeout: 260 seconds).
23:38:59 -!- sprock has joined.