#πͺ -progaming
1 messages Β· Page 59 of 1
doesnt bedrock work natively on linux
it doesnt
Like Minecraft bedrock
Imsane
they use UWP to avoid cracking on computer but you can still crack it pretty easily
@valid jetty I'll try table later, for now I'm stuck with dd iso inside a dd iso and deserted instructions
i dont like it lol
whats a dd iso
i have my own abstraction for styles
of course you do
cd but dd
dd if=mint.iso of=/dev/sda whilst dev sda has arch iso
very not fun to happen
const { merge, styles } = createStyleSheet({
container: {
display: 'flex',
alignItems: 'center',
justifyContent: 'center'
},
button: {
marginBottom: '4em',
padding: '2em'
}
});
export function MyComponent() {
return <div style={styles.container}>
<button style={merge(s => [s.button, { color: '#EEE' })}>Button 1</button>
<button style={merge(s => [s.button, { color: '#DDD' })}>Button 2</button>
<button style={merge(s => [s.button, { color: '#CCC' })}>Button 2</button>
</div>;
}
this
whats wrong with that
were you booted into the arch so
iso
its extremely simple but so powerful
type StyleSheet = Record<string, React.CSSProperties>;
export const mergeStyles = (...styles: React.CSSProperties[]) => styles.reduce((pre, cur) => ({ ...pre, ...cur }), {});
export const createStyleSheet = <T extends StyleSheet>(sheet: T) => ({
styles: sheet,
merge: (callback: (sheet: T) => React.CSSProperties[]) => mergeStyles(...callback(sheet))
});
and the styles are typed and eveything
are you using react for this...
i had to get gparted to not fuck up my nvme so i had to install another distro over arch that has pre installed gparted so ya
yes because im the most comfortable with it
π π π π π
this has some complicated state
why not just install gparted inside the iso
also doesnt the arch iso have gparted
pretty sure it does
can't
nop
gparted is more safe
I'm gonna lose it if i lose my windows install
i stayed like 40 mins to fix mirrors anyways
the iso was pretty much fucked and i didn't want to download again
- when width and height change, the matrix is resized but it keeps all the existing values in it
- when editing the matrix, values go into a seperate scratch matrix which overrides the actual matrix when you exit edit mode
- when you perform an iteration of the algorithm, the previous state of the matrix is stored in a set so you can undo the operation
- all of that is statefully and automatically synced with localStorage via a hook i wrote, and it acts exactly like normal state
- its passed through context too, to all the components that need each piece
its pretty complicated lol
im sure i could do that with something like svelte
and i was tempted
but i dont have time
i wasnt suggesting svelte π
jquery
i have no idea how i would do this in another framework lmao
import { useState, useLayoutEffect } from "react";
export const useStorageValue = <T>(
key: string,
cb: (x: string) => T,
def: string | null = null,
formatter?: (x: T) => string,
) => {
const [value, setValue] = useState<T>(cb(localStorage.getItem(key) ?? def!));
useLayoutEffect(() => {
localStorage.setItem(key, (formatter ?? String)(value));
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [value]);
return [value, setValue] as const;
};
const rows = useStorageValue("rows", Number, "4");
const cols = useStorageValue("cols", Number, "10");
const oldRows = useStorageValue("rows", Number, "4");
const oldCols = useStorageValue("cols", Number, "10");
const editing = useState(false);
const matrix = useStorageValue<number[][]>(
"matrix",
JSON.parse,
"[]",
JSON.stringify,
);
const scratchMatrix = useStorageValue<number[][]>(
"matrix",
JSON.parse,
"[]",
JSON.stringify,
);
const prevStates = useStorageValue<Set<number[][]>>(
"prevStates",
(x) => new Set(JSON.parse(x) as number[][][]),
"[]",
(x) => JSON.stringify(Array.from(x)),
);
i mostly asked cuz i dont really see how react makes it so much easier i wouldve suggested vanilla since we arent in 2006 anymore and vanilla is powerful enough
why not use dioxus
π₯
im planning on making something in vanilla js ts with rust backend soon
vanilla is viable but again this is complicated state which can be expressed more beautifully and concisely in react
why not use dioxus
nanostores
cuz its 1 page
also better user experience since fast and only having a minified js file is better than a giant 5 million gb bundle with react or dioxus and all that garbage
astro π₯
for the record this deploys a single react file lol
i dont need 50 files on my system all used to create one file either
its 188kb ungzipped
who the hell thought of all this garbage?
which is high but whatever
i love that rsbuild has an x on the icon (it works perfectly fine)
i despise the current js ecosystem is so much everything for nothing
yeah i agree with that
thats a lot of files
i was gonna try something new but the simplex tableau is a complicated thing
if i got it wrong it wouldve been hell to debug, and it was already hell enough to debug the state even in react
i might rewrite it
@hoary sluice remember this https://unofficial-d25-2026.netlify.app/
did you ever get it to work
you tried making a really hard aoc and instead made a really easy typing speed test
π
workspaces moment
@hoary sluice @leaden crater i think its fully finished !!!!
i finished a hobby project in a day thats a record for me
didnt you write ichigo in a day
what is this evil magic
2 days if you count just the parser and compiler
otherwise 3 days if you count the lexer too
Linear programming is a technique for finding the minimum (or maximum) of a linear function of a set of continuous variables subject to linear equality and inequality constraints.
we should configure nvim together
nvchad blobcatlightpink~4
nvchad isnt perfect
works well enough and i still use zed mostly anyway xd
ive read this so many times it doesnt help
only time i use nvim is when im sshed into my thinkpad
basically
imagine you have a company
the company makes like.. paints A and B
what's a paint
to make paint A you need 35 of ingredient X and 42 of ingredient Y and it makes you $25
to make paint B you need 38 of ingredient X and 33 of ingredient Y and it makes $22
you have like 2000 of X and 1500 of Y
how much paint do you make of each kind such that you maximize your profit
aoc claw machine problem
its basically that but on a larger scale (3+ constraints)
at which point you cant graphically solve it by intersection anymore
can i have unlimited constraints
not really that was just systems of equations
yeah thats kinda the point of the simplex algorithm
to extend it to as many constraints as needed
but isnt this also a system of equations
i mean yeah but not really because theyre inequalities not equations
they become equations when you introduce slack variables
but then you have more variables than equations so you cant solve them like systems of equations
thats where the tableau comes in ^^^
i mean aoc was you have product A and product B, getting A takes a x steps and b y steps and getting b takes c x steps and d y steps
right
isnt that the same
yeah but that was solveable directly
how do i use it
try to like see how the inequalities map to the tableau
i recommend watching a video about this if you really wanna learn
its hard to explain without going into a lott of detail
this looks useful for aoc
theres usually multiples solutions for aoc problems
this is essentially my solver impl
export function pivot(
matrix: number[][],
row: number,
col: number,
rows: number,
) {
const newMatrix = matrix.map((row) => [...row]);
const p = newMatrix[row][col];
newMatrix[row] = newMatrix[row].map((val) => val / p);
for (let i = 0; i < rows; ++i) {
if (i === row) continue;
const m = newMatrix[i][col];
newMatrix[i] = newMatrix[i].map((val, j) => val - newMatrix[row][j] * m);
}
return newMatrix;
}
export function autoPivot(matrix: number[][], rows: number, cols: number) {
// Ignore the RHS row when finding the pivot column
const c = matrix[0].findIndex(
(x) => x === Math.min(...matrix[0].slice(0, matrix[0].length - 1)),
);
if (c === -1) return;
// Find the row with the smallest ratio
const ratios = matrix.slice(1).map((x, i) => {
const pivot = x[c];
return pivot > 0 ? matrix[i + 1][cols - 1] / pivot : Infinity;
});
const r = ratios.findIndex((x) => x === Math.min(...ratios));
if (r === -1) return;
return pivot(matrix, r + 1, c, rows);
}
export const isOptimal = (matrix: number[][]) =>
matrix[0].slice(0, matrix[0].length - 1).every((x) => x >= 0);
const solve = () => {
const solvePrevStates: number[][][] = [...prevStates];
let solveMatrix = matrix.map((row) => [...row]);
while (!isOptimal(solveMatrix)) {
const matrix = autoPivot(solveMatrix, rows, cols);
if (!matrix) break;
solvePrevStates.push(solveMatrix);
solveMatrix = matrix;
}
setPrevStates(setWithDedupe(solvePrevStates, deepEqual));
setMatrix(solveMatrix);
};
its not that big but probably too big to write in the middle of an aoc
especially considering you have to actually create the tableau
library
i guess lol
i wouldnt recommend just refactoring into kt and putting into a lib tho
it wont be helpful at all if you dont know how to use it, like you wont even catch the cases where you "could" use it
return LP().solve("M = m - 5").ineq("m <= 9p2 + 6p3 + 11p4").ineq(/* etc */)
im obv gonna learn how it works beforp making it
lmao good
that sounds like pain to parse
i only have to write the parser once
ACTUALLY
you might find this useful https://rosiepie.notion.site/Power-Rule-e358c822af0d4136b90906ca708b8880?pvs=74
project sekai???
or well https://bit.ly/cute-power-rule
The Playground lets you write TypeScript or JavaScript online in a safe and sharable way.
how are you pulling random articles you wrote out of your ass
is power rule
f = x^2
f' = 2x
yes
but it only works if the power is a constant and the base is the variable youβre differentiating with respect to
otherwise you have to use chain rule or something
i didnt know they had names i thought u kinda just did that
lol nope thereβs like 5
constant rule, power rule, product rule, quotient rule, chain rule
typical low-level developer
disappear, power -> mul, product stays constant, quotient -> ln, inner derivative * outer derivative?
product and quotient not quite
all these rules when all you need is a calculator tsch
one of the rules forbid calculators
time to get murdered by grammar police
d/dx[f(x) * g(x)] = (fβx)(g(x) + (f(x))(gβx)
i thought this was pro gaming not math :(
i think we learned that and i frgoro
d/dx[f(x) / g(x)] = ((fβx)(g(x) - (f(x))(gβx))/(g^2(x))
lisp
chain rule is d/dx[f(g(x))] = fβ(g(x)) * gβx
ok whats the integral of the 7th derivative of angular momentum of an orbit with respect to the 2nd derivative of time in Gyrs
most likely 0
OOM error killing host process
statistically pi or pi/2 and i donβt like it
youre effectively taking the 6th derivative of some formula, theres a pretty good chance its gonna be 0
oh true
nop, eccentricity + gravity -> not zero
and the 2nd derivative of time is also 0 and integrating with respect to 0
i think this fits https://en.wikipedia.org/wiki/Perturbation_theory
In mathematics and applied mathematics, perturbation theory comprises methods for finding an approximate solution to a problem, by starting from the exact solution of a related, simpler problem. A critical feature of the technique is a middle step that breaks the problem into "solvable" and "perturbative" parts. In regular perturbation theory, ...
stop being big brain guys my dumbahh can't comprehend
2nd derivative of time is acceleration
no its not
thats the 2nd derivative of position wrt time
d''x/dt''
d''t/dt'' is 0
unless youre in a black hole or something stupid like that
where time is like a polynomial or smth
7 dimensional time
have fun integrating with respect to 0
@valid jetty whats the 7th derivative of x with respect to 0
have fun taking a disrespectful derivative (derivative w.r.t. 0 get it haha)
alr lets play my fav game, where are the 42 errors in my code comming from after restarting my lsp?
ah
there is no approximate solution to an undefined equation
rookie shit, 3 way development is where its at
nice start to april i guess
its not gonna last tho because i have about a month until my end of year exams so i have to focus on those instead
ive been recommended to do 6 hours of revision a day every day for the next month
Vibe coders, visualized:
QRT: buitengebieden
Birds are fed by their parents in their infancy. When the time comes to feed themselves, there can be some confusion when the food does not go into their mouth by itself..
Should i switch from make to meson/cmake
@supple whale do you have somewhere the args i should use when compiling with emcc
i thought that 1024kib would be enough to run java program π
Lol, you think 1mb is enough for anything?
wait mb i meant 1024 bytes
π
well the heap filled up instantly, but i didnt run gc
Have fun with that
I posted them before
april fools !
this is cool but have you seen ciβ
jump to the nearest β, clear everything until the next β, and enter insert mode
im thinking if i should rewrite my heap again and instead of having preallocated block i should just use the platform's malloc implementation
any tips on deciding on this?
@leaden crater @hoary sluice YOU RUINED IT I HAVE ROMANIAN ON MY γγγγ NOW

romanian math edits are crazy
is there even a solution besides a=b=c=1
what's wrong with my gpt π
exposing yourselves as ai loving vibe coders...
i just need someone to discuss the pros and cons of some stuff sometimes... i dont really use it to code anything
yeah i do that too sometimes
ive never deleted the chats with gpt
so like
i could
however isnt that just a modern version of the coding duck lol
i use my plushies instead for that purpose
i was actually thinking of making a big 3d printed duck with rpi and speaker inside wired to openai api
we shouldve trained chatgpt on stackoverflow correctly
its still just a glorified search engine
we as a society NEED it to sometimes just reply with "You actually broke rule 5 which is no duplicate questions so i cannot help with your request π€"
"hey chatgpt how do i solve this problem"
"fuck you i cant answer that, somebody already asked me this question at some point in the past with similar context, just ask them what their answer was lol"
Search engine and copyright violation engine
@valid jetty is a vibe coder
"Can't you just Google that yourself?"
LMAO
@nimble bone hiiiii do you know how to use this https://acquitelol.github.io/simplex/
nop im stupit
im trying to find ANYONE who knows what this even is
the only people who know are people who do further maths at my school
!!! (its so pointless)
i fucking hate vibe coders, in our class we had to write a test to try out tdd and then exchange it with other group to write the implementations. we received gpt generated code which didnt even compile mainly because they were passing strings to enums everywhere for some reason
when i confronted them about it they were like "well its not our problem, you have to work with it"
like man with this attitude you wont be getting paid for this
i ended up just rewriting everything from the ground up
people who vibe code are like
developed ipad kids
ipad kids who grew up
@nimble bone i have banana milk π π π π
@valid jetty
hiii
hiiii
can you help me with a problem i saw, i tried both calcualtor, photomath, wolfram and ||ai|| and none got it right
maybe im stupid and there doesnt exist a solution at all
the logs arent multiplied so i think its impossible
simplification
@valid jetty are you a vibe coder
@valid jetty code a procedural tree generator with elle
In real world, no tree is binary
@deep mulch ```py
def parity(n):
return "eovdedn"[n % 2 :: 2];
odd even
print(parity(5), parity(8))
NO
add js-like type coercion @valid jetty

What is the correct answer?
@deep mulch
IDENTIFICATION DIVISION.
PROGRAM-ID. COLLATZ.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 NUM PIC 9(10).
01 TEMP PIC 9(10).
PROCEDURE DIVISION.
MAIN-LOGIC.
DISPLAY "ENTER A NUMBER: "
ACCEPT NUM
PERFORM UNTIL NUM = 1
DIVIDE NUM BY 2 GIVING TEMP REMAINDER TEMP
IF TEMP = 0
COMPUTE NUM = NUM / 2
ELSE
COMPUTE NUM = NUM * 3 + 1
END-IF
DISPLAY NUM
END-PERFORM
STOP RUN.
mm Fortran
WHAT
I love Fortran
its not fortan
catbol
questionable dolfies
is that unico
@royal nymph
vencord rust rewrite when
today
less than a year (
)
man, imagine if discord actually let us make 3rd party clients
wait actually, does is the new discord game integration available to every1?
cant u just use it to make a fake game, and ur own simple discord client, in rust?
it lets you if you match all requests with requests from official clients 1:1
yeah you just fill form and they give u access
however its oauth2 and has pretty limited functionality
@hazy pine welp, vencord rust time!!!!
i assume, read dms, write dms and read friends list?
and thats it?
i am not talented enough for this
theres alot of 3rd party client we'll be finee
what if we just make vesktop but with tauri, would that be rust enough
yeah but they are bannable
read list of guilds, their channels, roles, your friend/blocked users/ignored and friend request list, update your status/rich presence etc
nah not really lol
ay, thats quite a lot
but if its an exact 1:1 recreation of the regular client, then likee
is it really a problem
every single person i know which tried their own non-web based discord client got banned
then they didn't bother to mitigate antiabuse systems
if you send an appeal and explicitly say you used third party client then you'll unbanned
yeah i think the game integration thing is x100 safer
I know one guy who's been running his own for years
and easier
ya oauth2 almost has essentially no antiabuse systems
I made a cursed solution for logger lazy evaluation
(if level is hidden ?. returns undefined)
(also allows checking whether level is shown with if (logger.info)
lmao
wouldnt it be better to simply change the function to a noop instead of console.info when the level is disabled?
and not have the extra markup?
it's so that it only evaluates the message expression if the level is enabled
in case you call a really expensive function for some reason

before i had it execute the message if it was a function
but i realised that would be an ideal weak point for rce 
fair
ah yes escape codes
i fucking hate it
i recommend the debug package if u want to find more codes and how to find which are supported
but it makes my blood boil, because while its nice in console, when logged to a text file its fucking awul
I think i will implement logging to file separately
i log all my console messages to a logs.txt file, and opening that makes it awful
i did it via console, because its legit just piping stdio into a file
so its so laughably easy its crazy
but i don't think piping into a file works with stderr anyway
cant beat chalk for it
:^)
if i'm actually being sensible and using libs i might as well find a logger lib

although none of them looked like much fun to me for some reason
by far the BEST logging lib i used
but it has issues when you use electron logger
since you cant easily just disable or change colors for browser
thanks but i think i'll see how painful it is to write to file first
you'd probably want it to archive the file every time it's midnight and gzip it
what are u running?
node/deno?
thats just a utility lib for logging to console.log
that lets u enable/disable different debugs
i saw it supports multiple streams in a quick skim
so u can do DEBUG=chat:* and it debugs for example chat:message chat:event
kinda useful
ya do
import Debug from 'debug'
const debug = Debug('chat:message')
debug('emitted message: %s', message)
my solution was just to try not to litter the log with too many messages
and it just outputs to console.log
and then you pipe console.log aka stdio to a file yourself
which is piss, like 4 LOC
import { createWriteStream } from 'node:fs'
process.stdout.pipe(createWriteStream('/log.txt', { flags: 'a' }))
but does it wait for the syscall π
no, its a stream
yeah that would be weird
the initial console.log call is sync
but then its passed to a stream, which is event loop based
i assume it uses a buffer
from what i understand
but i would've thought the actual syscall would be on another thread
no, its on "the same thread"
or the same process
its kinda weird with how nodejs does native bindings
because its the same thread, but its async from the v8 vm itself...
and its fucky
the less you know the better for your sanity
sounds about right
What the hell is there even a good auth library in js?
Better auth works not works
Authjs just sucks
I dont want to switch to supabase duh
Do i just roll my own auth
just use dioxus
I need something compatible with nextjs
If i were to use other lang for backend id just use java
dioxus is fullstack
Im not using rust because its a group project
perfect, convert your group as well
They are vibe coders tho
w.. what..
Assassinate them
large language... v... machine-learning (ai)
I've had 2 memory related issues with C++ thus far, most of what's fucked with this demented language is how people are like
"DAMN BRO, BUT WHAT IF WE MADE IT FASTER?????"

Shit lang where I guess it's common practice to optimize for the sake of optimization
But now my tests are passing again
Isn't that gep ub?
Undefined behavior
in what way?
InBoundsGEP requires the offset to be in bounds
Well it is, it is in bounds once it reaches the verifier
but it actually doesn't seem to give a shit if it's the first index that's out of whack
It's the ones after that where it actually validates, since it would need to calc the machine offset
Either way. The pain here is that I'm re-mapping GEP offsets.
And this fucker has been giving me a bad time
Where it will gleefully alias instances of GEPOperator
how do i make a plugin click on a message's button using the button's customid? 
is this see plus plus
for more context, i get the messages using MessageStore.getMessages(channel.id);
whats that for
How evil can you possibly be
Me:
isnt that kinda selfbot behaviour
why does thei nvite endpoint for bots only show friend invites if you remove the bot prefix of the token

i rly need to get better at using abortsignal
esp for like destroying classes and shit
javascript destructor when
I've never seen a GC language with proper dtors
does anyone know
hiddenphox uses fetch manually
hf!inviteinfo aABKp5XD
where is discord staff in this server...
this is interesting
#define __DEFER_INTERNAL__(f, v) \
auto void f(char*); \
char v __attribute__((__cleanup__(f))); \
auto void f(char*)
#define __DEFER_WITH_COUNTER__(x) \
__DEFER_INTERNAL__(__f##x##__, __v##x##__)
#define __DEFER__(N) __DEFER_WITH_COUNTER__(N)
#define defer __DEFER__(__COUNTER__)
int main() {
int *x = malloc(6 * sizeof(int));
defer { free(x); };
return 0;
}
uh
which calls a destrictor when an object exits scope/wants to be GC'ed
does it really work like in c#
i thought it worked like
using(console) { log("h") }
TypeScript 5.2 Release Notes
and was very discouraged
class TempFile implements Disposable {
#path: string;
#handle: number;
constructor(path: string) {
this.#path = path;
this.#handle = fs.openSync(path, "w+");
}
// other methods
[Symbol.dispose]() {
// Close the file and delete it.
fs.closeSync(this.#handle);
fs.unlinkSync(this.#path);
}
}
export function doSomeWork() {
using file = new TempFile(".some_temp_file");
// use file...
if (someCondition()) {
// do some more work...
return;
}
}
its not implemented yet
wtf is that
kotlin inspired
awful!
i mean
i think it was created before kontil went open source
delete
i was just taking a chance to bash kotlin
beats java tbf
no one should write Kotlin code like that
nah "i program java how did how did you know" [gigachad gif]
with is intended for changing the context of a scope
i mean it adds good things to java
i just don't like some of the other things
the only time i loved kotlin was in a dream
kode tode
that is completely true
iirc
i don't remember the dream now
but i remember posting about it

tode.kode
pretty boring in c++ tbh
delete
@valid jetty i rizzed up my economic teacher to give me an A if i do checkup on friday
im gonna graduate with a perfect gpa now
lmao insane
@valid jetty hiii
@valid jetty https://youtu.be/RmqgyRsCfJs
0:00 Havana
0:23 Bamboleo
0:39 never gonna give you up
1:00 Oh My Little Baby Boy
1:18 Waka Waka
1:37 Barbie Girl
1:54 After Dark
2:12 five nights at freddy's
2:32 Gangnam Style
2:49 Gangstaβs Paradise
3:15 Blinding Lights
3:40 Billie Jean
4:10 Espresso Macchiato
4:30 Marshmallow
#tralalerotralala #italian #brainrot #mashup
guhhhh disjoint unions so insane in typescript
what the hell is that
ai thumbnail..
@valid jetty how hard do you think it would it be to make a mahjong discord bot
i meannn isnβt a mahjong clone pretty hard in general
do you really need to separately fetch response message with discord api
i guess this is why people don't do buttons based on message ID
I made a lookup with message id, button id
so 1358876721079910431, next_page could retrieve data about the command and then use it to respond
i guess uuids is better?
rewrite it in rust
nop
a interaction response message? they recently added a way to immediately get message right after responding, eg for dpy: https://discordpy.readthedocs.io/en/stable/interactions/api.html#discord.InteractionResponse.send_message
dont think so
the message is optional and is not present for me
Are you responding with message update?
I am responding by creating a message
but it should be present
** Only present if type is either CHANNEL_MESSAGE_WITH_SOURCE or UPDATE_MESSAGE.
time to monkey patch fetch to work out what oceanic is doing again
has any1 ever overwrote types in a typescript extended class?
class HashSet<T extends {id?: string}> extends Map<string, T> {
constructor (iterable: Iterable<T> = []) {
super()
for (const o of iterable) this.add(o)
}
_getId (o: T) {
return o.id
? o.id
: JSON.stringify(o, Object.keys(o).sort())
}
has (o: T): boolean {
return super.has(this._getId(o))
}
add (o: T) {
super.set(this._getId(o), o)
}
delete (o: T): boolean {
return super.delete(this._getId(o))
}
}
its crying about
Map<string, T> the string is the key type and T the value type
when you are doing has (o: T) for example you are trying to use the value type when it expects the key type, you also dont copy the method parameters correctly
class HashSet<T extends {id?: string}> extends Map<string, T> {
constructor (iterable: Iterable<T> = []) {
super()
for (const o of iterable) this.add(o)
}
has (key: string): boolean {
return super.has(this._getId(o))
}
...
}
it somewhat works :)
@hoary sluice https://users.math.msu.edu/users/gnagy/teaching/ode.pdf See Chapter 4
pdes?
partial differential equations
ohhh
ordinary differential equations by vladimir i. arnold i believe is a pretty good book for its stuff
In geometry, a solid of revolution is a solid figure obtained by rotating a plane figure around some straight line (the axis of revolution), which may not intersect the generatrix (except at its boundary). The surface created by this revolution and which bounds the solid is the surface of revolution.
Assuming that the curve does not cross the ax...
nop, not at school,,
tho im more advanced that what is school
school is designed for the slowest person
i think i learned abt integrals in 6th grade myself
wtf π
i was 13 then
i still dont know how to solve integrals that are complex
i learned abt log, complex numbers + complex plane, derivatives, integrals, lambert w , hyperoperators, transcendental numbers, etc a few years ago,,, but i have to revise it
blackpenredpen, 3b1b, vsauce, etc were pretty interesting to watch
i did a lot during quarantine but not integrals, my mom said she wouldn't help me because "im too young"
now i've been interested in literature recently not much math..
That actually reminds me alot of myself. Are you by chance ASD?
asd?
autistic
nop probably im not
Why does that sound so much worse ;-;
it doesn't
my grades at school are stagnating at 50% almost failing anyways, math didnt help
At what subjects?
everything
only math, english, history is higher than 80%
Is (secondary) language stressful or hard for ya?
everything is
i have so many unfinished things because i really dont know where to start from
I feel like im looking at a mirror
Thats a symptom in both adhd and asd.. like you are basically describing me
i was supposed to make project abt smth in german literature, didnt do it for 3 months, only at the deadline and even then from 11pm onwards
Oh you got german too?
.. yeah we are clones
Do you find busywork difficult?
i was typing without thinking and then i passed, i dont think at any essay, i feel like im putting words from a table
busywork?
Repeated similar tasks meant mostly to keep you busy
For me, 30 questions with the same formula is just hell. I just make a program to do it for me after the 3rd question
yea kinda
lmao in lockdown i was playing minecraft
i only started getting interested in that stuff AFTER lockdown
if i have to use same thing i just do like
- // - or Let {thing} be ()1 , {thing} be ()2 etc and use those as replacement
i made a castle on the school laptop during lockdown
:3
probably is not there anymore, but it was so boring to watch all useless studies
so when we had to go to school i just used the laptop for "work"
Mhm! If i understand the concept then why manually calculate it
i used to abbreviate essays
same word replaced by ()1 , ()2, etc
or sentences
etc
arrows
Oh? So you struggle with long essays?
yea but im getting better
when i have to write essay for literature i make weird sketches with many arrows and tree-like structures and it just works
So you need things structured how you like it?
Is hand placement awkward?
eh?
Dino hands?
I mean like in general
normal hands..
Alrightt
Im trying to not sound rude but, id recommend speaking with a professional :D
nop
Cause to me, it genuinely sounds like you might just have some form of ASD
Oke
i dont need professionals, if i dont know it it stays like that
@pine prawn planes or trains
tbh i probably have some form of thing
i get hyperfocused on advanced math and computer science but do terribly in stuff like biology and chemistry
or like stuff i donβt pick up any of what im taught in school
like how i got 9/33 in physics and 30/30 in cs
lmao
bio and chem so bad..
bio and chem were my worst enemy in school
i cant get how people learn biology its literally 10000 pages of learning
itβs just pure memorization
lmao yeah
for chem currently we have organic chem i told the teacher sorry, cant do it
Do i have to choose-?
yes.
Trains obviously
Fuck no, memorisation sucks
i pick trains because most of my friends are trains
Who turned your friends into trains
the liberal agenda..
Rules and algorithms are very good doe
WOKE!
Trains..
intuitive knowledge is the bestβ¦..
I mean.. if it makes sense it makes sense :3
insanity
i wish sky planes existed and we had to drive out from the atmosphere
learning the roots or base of something and then it making sense directly to built upon it and make out more knowledge is the best way to learn
cs is literally EXACTLY that and thatβs why i love it
Rosie is a savant
i want to make my own universe
@leaden crater let's make one
Ikr! Either it needs to have rules and predictable algorithms, or it should be intuitive in a way that makes experimentation fun and semi predictable
impossible
Well-
yeah ^^^^ thatβs EXACRLY why cs is so good
Ikrrr
not even with the most complex VR humanity possess, the feeling wont be the same
you just fuck around and find out and learn in the process
Oh you were talking about vr?
i wonder if thereβs a way to make a completely DIY computer
yea
proabably
@valid jetty program an ASIC
I thought you meant a literal, physical, mini universe
like you manually mine out the materials, make the cpu and other parts from scratch, then write your own language and then kernel and then stdlib and then OS
a friend of mine works with vhdl so probs possible
@valid jetty build a slayer excitor circuit
possible
i would do it
possible but does it exist
i will do it
do it.
@leaden crater is simulated on my pc
@deep mulch iβm an ai
I know
I mean.. how do you think modern pcβs were first made~?
i dont understand how antique people didnt have the knowledge of today. like...what
i mean yeah but in this society..
I force sand to think
i want to make my own sword
Humans are pretty darn intelligent
how
machete
Good choice
but probs katana too, i know the process from veritasium
Thats fair
and the documentation is public
If you make a katana make sure to give it the edgiest name you can think of
If it can make you cringe after hearing one third of the name, then its good
mysword0
Programming reference, very fun!
Should have done mysword0.dat
This is a video about how Japanese samurai swords, aka katanas, are made β from the gathering of the iron sand, to the smelting of the steel, to the forging of the blade. Head over to https://hensonshaving.com/veritasium and enter code 'Veritasium' for 100 free blades with the purchase of a razor. Make sure to add both the razor and the blades...
@leaden crater I eat sand
sandman
Crunchy
sword
Mercury-lead alloy :D
https://www.youtube.com/watch?v=8hnu5DspBso
https://www.youtube.com/watch?v=eukDccnTjJ8
https://www.youtube.com/watch?v=_zhdsLsEdyY
Head to http://squarespace.com/forge to save 10% off your first purchase of a website or domain using code FORGE.
Bonus video is on my website here: https://www.asteeleblock.com/bonus
DISCORD: https://discord.gg/7uD2wKyBJD
ALEC'S INSTAGRAM: https://www.instagram.com/alecsteele/
JAMIE'S INSTAGRAM: https://www.instagram.com/jamie.popple/
PATRE...
Head to http://squarespace.com/forge to save 10% off your first purchase of a website or domain using code FORGE.
DISCORD: https://discord.gg/7uD2wKyBJD
ALEC'S INSTAGRAM: https://www.instagram.com/alecsteele/
JAMIE'S INSTAGRAM: https://www.instagram.com/jamie.popple/
PATREON: https://www.patreon.com/alecsteele
My name is Alec Steele. I am a bl...
Head to http://squarespace.com/forge to save 10% off your first purchase of a website or domain using code FORGE.
DISCORD: https://discord.gg/7uD2wKyBJD
ALEC'S INSTAGRAM: https://www.instagram.com/alecsteele/
JAMIE'S INSTAGRAM: https://www.instagram.com/jamie.popple/
PATREON: https://www.patreon.com/alecsteele
My name is Alec Steele. I am a bl...
yup
best metal
i really want to show people what i watch on youtube but most of them never actually care for my videos
despite putting a lot of effort in searching in history for it
I mean.. u literally watch what i watch
really?
didnt know abt that chanel
Plasma channel?
plasma?
You should check em out!
im insane
Oooo, drone shots?
i also watched demo ranch until a few days ago
Oh i remember watching that like.. 2 years ago?
Heres a less serious and not irl suggestion: GrayStillPlays
Also have you watched nilered?
already watched all his universe sandbox 2 + old gta 5 videos
He is awesome
Though im gonna sleep now
Gn!
Ooo yeah!
@hoary sluice @deep mulch is it a good idea to get rid of this feature
use std/io;
fn deref(i32 *`ptr`) @manual -> i32 {
`%res =w loadsw %ptr`;
`ret %res`;
}
fn add_one(i8 `val`) @manual -> i8 {
`%res =w add %val, 1`;
`ret %res`;
}
fn `identity`(i32 `val`) @manual -> i32 {
`ret %val`;
}
fn main() {
let a = 123;
$assert(deref(&a) == 123, nil);
$assert(add_one(a) == 124, nil);
$assert(identity(a) == 123, nil);
$assert(`identity`(a) == 123, nil);
// The function name can be represented without exact literals too in this case
$assert(`identity`(a) == identity(a), nil);
io::println("All `exact literal` tests have passed!".color("green").reset());
}
it would simplify the compiler quite a lot to get rid of the whole inline IR thing, there are a lot of compiler hacks to bypass it and make this work
but it makes the language more interesting
its not even very useful anymore for anything
yes
looks very cursed
This might be useful for tests
Like in Kotlin you can do:
@Test
fun `it works`() {
assertEquals(sum(42, 42), 84)
}
why would it be useful
What do the backticks do
they define an "exact literal"
when its in the case of a top level statement, it acts like an IR instruction
when in the case of a function decl or call, it acts like a raw string
Oh, is that not source code
so you can do yeah this
it is
An exact literal is Elle's way of implementing inline IR into the language. This basically means that you can write intermediate language code directly in Elle which compiles without any type, size, scope, or name context.
You can create an "exact literal" by wrapping the inline IR with "`" on both sides of the expression, and ensuring you include a semicolon at the end.
You can also use the manual return directive, which states that Elle should NOT include an automatic return if the function does not return anything by default. You can do this by adding the @manual attribute to your function.
@jade stone
Why not just use a function called it with a lambda argument
what does that mean
it ("does a thing") {
doThing();
}
hate
@deep mulch rate horrorcode
nmd: if (importUses?.uses.length === 1) {
const loc = importUses.uses[0].location;
const call = findParrent(loc, isCallExpression);
if (!call || call.arguments.length !== 1 || call.arguments[0] !== loc)
break nmd;
// ensure the call is `n.n(...)`
const funcExpr = call.expression;
// ensure something like `foo.bar`
if (!isPropertyAccessExpression(funcExpr)
|| !isIdentifier(funcExpr.name)
|| !isIdentifier(funcExpr.expression))
break nmd;
// ensure the first part is wreq
if (!this.isUseOf(funcExpr.expression, this.wreq)
|| funcExpr.name.text !== "n")
break nmd;
const decl = findParrent(funcExpr, isVariableDeclaration)?.name;
if (!decl || !isIdentifier(decl))
break nmd;
this.vars.get(decl)
?.uses
?.map((x) => x.location.parent)
.filter(isCallExpression)
.map((calledUse): Range[] | undefined => {
if (exportName === WebpackAstParser.SYM_CJS_DEFAULT) {
// TODO: handle default exports other than just functions
return isCallExpression(calledUse.parent)
? [this.makeRangeFromAstNode(calledUse)]
: undefined;
} else if (typeof exportName === "string") {
const expr = findParrent(calledUse, isPropertyAccessExpression);
if (!(!!expr && expr.expression === calledUse && expr.name.text === exportName))
return undefined;
return [this.makeRangeFromAstNode(expr.name)];
}
throw new Error("Invalid exportName");
})
.filter((x) => x !== undefined)
.forEach((use) => {
const final = use.at(-1);
if (!final)
throw new Error("Final is undefined, this should have been filtered out by the previous line as there should be no empty arrays");
uses.push(final);
});
}
you can break if statements ?????
yop
yea
glorified goto
rosie insane
yeah
i use a labled block in my actual code, just moved the label to the if for indentation
you can label any statment iirc
wait ANY statement??? so i can just have like IIFE behavior in my functions
like the reason i want
(() => {
const x = 1;
if (!x) return;
})()
``` is so i can break out with return
does this mean i can do
foo: {
const x = 1;
if (!x) break foo;
}
that is valid
thats why im doing it 
this logic need to have early returns
and its only used once
so i dont want to extract it to its own function
you could label the if statment itself, but that just looks a lot worse and wouldnt keep locals in their own scope (not like there are any locals in that scope anyway)
why use goto when you can use cometo
(copy and paste the code from where you wanted to goto to where you called it)
Encoded SSTV audio with Martin 1 mode
Unfortunately an error occurred during command processing
Unfortunately an error occurred during command processing
bruh
Encoded SSTV audio with Martin 1 mode
Decoded SSTV image
@deep mulch me when my horrorcode works first try
guhh
@jade stone why is sstv so poorly documented
whats that
Slow-scan television (SSTV) is a picture transmission method, used mainly by amateur radio operators, to transmit and receive static pictures via radio in monochrome or color.
A literal term for SSTV is narrowband television. Analog broadcast television requires at least 6 MHz wide channels, because it transmits 25 or 30 picture frames per secon...
insane
watch this
Unfortunately an error occurred during command processing

copy link does not copy
oh, yeah i ran into that yesterday
crunchy
@deep mulch are you on vesktop, web or stable
stream of images 
yes
I've been making a plugin with a setInterval but it breaks after my computer goes to sleep
doing some research I could fix this by using powerMonitor
import { powerMonitor } from "electron";
...
start() {
createInterval();
powerMonitor.addListener('suspend', () => clearInterval(interval));
powerMonitor.addListener('resume', createInterval);
}
It yells at me saying
Cannot import electron in browser code. You need to use a native.ts file
Is there any docs for how to use a native.ts file in vencord? I tried looking at how other plugins do it but I'm new here and cant read them
wow
is that jvm native code 
its my own jvm native code
insane
i honestly didnt know how else id write it lol
well i actually got an idea
im thinking of opensourcing it so people can laught at my trash C code
why can't you just do something like this? am I stupid?
NATIVE(java_lang_Class_getPrimitiveClass) {
char *name = ToString(vm, (ObjectRegion*)ToAddress((struct Variable*)argv[0]));
char *primitiveName = NULL
if (strcmp(name, "int") == 0) {
primitiveName = "java/lang/Integer";
}
if (strcmp(name, "long") == 0) {
primitiveName = "java/lang/Long";
}
if (strcmp(name, "short") == 0) {
primitiveName = "java/lang/Short";
}
if (strcmp(name, "boolean") == 0) {
primitiveName = "java/lang/Boolean";
}
if (strcmp(name, "byte") == 0) {
primitiveName = "java/lang/Byte";
}
if (strcmp(name, "char") == 0) {
primitiveName = "java/lang/Character";
}
if (strcmp(name, "float") == 0) {
primitiveName = "java/lang/Float";
}
if (strcmp(name, "double") == 0) {
primitiveName = "java/lang/Double";
}
if (strcmp(name, "void") == 0) {
primitiveName = "java/lang/Void";
}
free(name);
return CreateVariable(STACK_ELEMENT_IS_ADDR | STACK_ELEMENT_LONG, primitiveName);
}
no you are not stupid i realized it too and rewrote it already lmao
why so many strcmp..
Can I see the rewrite?
its literally the same as yours...
hell descends on earth with strcmp
@dense sand why are you writing a jvm in c?
i was bored
real
it was kinda my dream always
.. to make a jvm?
you should do the BEAM next (30 years)
what else would you run it on 
java
If it hasn't been done yet I'd be surprised actually
why not just
NATIVE(java_lang_Class_getPrimitiveClass) {
char *name = ToString(vm, (ObjectRegion*)ToAddress((struct Variable*)argv[0]));
char *primitiveName =
(strcmp(name, "int") == 0) ? "java/lang/Integer" :
(strcmp(name, "long") == 0) ? "java/lang/Long" :
(strcmp(name, "short") == 0) ? "java/lang/Short" :
(strcmp(name, "boolean") == 0) ? "java/lang/Boolean" :
(strcmp(name, "byte") == 0) ? "java/lang/Byte" :
(strcmp(name, "char") == 0) ? "java/lang/Character" :
(strcmp(name, "float") == 0) ? "java/lang/Float" :
(strcmp(name, "double") == 0) ? "java/lang/Double" :
(strcmp(name, "void") == 0) ? "java/lang/Void" : NULL;
free(name);
return CreateVariable(STACK_ELEMENT_IS_ADDR | STACK_ELEMENT_LONG, primitiveName);
}
``` or something, this should work no?
I HATE TERNARIES
they're pretty good
this is ugly
Ternaries should only ever be 1 line imo
nop
Teavm
do you want an implementation with goto?
any more and its a disgrace
Ugh mb i thougjt i was replying to a different thing
Teavm is jvm compatible for web
why can't switches just be expressions
i swear im going to have a 2000 line file just for parsing webpack ASTs by the time im done with my vencord extension
because you're using too many lines for something that can be written shorter using ternary and also looks pretty
or you can just write a switch case anyways
I think multiline/nested ternaries are a mistake
react kinda solidified this viewpoint for me
I far prefer v-if from vue over what react does with ternaries
yea, id rather have an IIFE / labled statment over nested ternaries
insane
I hate how many times I've done IIFEs in js for random stuff like this.
1 billion line ternary operators for every number
you should see discords code, they have some pretty cursed IIFEs
is discord open source even
no, im talking about the minified code that the clients get
otherwise it's just weird binary translated
I have delved into discord's code to find some FluxDispatcher things and did not like the minified react experience
minified react gets very easy to read once you have a bit of experience
but the most annoying thing for me was not being able to see where things were in the source
so i made go to definition and list references for the minified code 
let primitiveName: Option<&str> = match name {
"int" => Some("java/lang/Integer"),
"long" => Some("java/lang/Long"),
"short" => Some("java/lang/Short"),
"boolean" => Some("java/lang/Boolean"),
"byte" => Some("java/lang/Byte"),
"char" => Some("java/lang/Character"),
"float" => Some("java/lang/Float"),
"double" => Some("java/lang/Double"),
"void" => Some("java/lang/Void"),
_ => None,
};
Actually nvm it doesn't look any better
how will it make it simpler
dont you parse the entire function body as ir
dont need it anymore hopefully will never need it again
wait until you hear about 2nd order digital filters (theyre awesome )
rosie whats the convolved impulse respones of two identical RC filters with the impulse response 1/Ο * e^(-t/Ο)
@leaden crater hii
@deep mulch hiii
@jade stone boo
scary
should calling init more than once just silently skip or throw error
@deep mulch
nini
do you speak java or c
yes
both?
yws
does anyone know how can i intellij tab this properly so the values are prettily under each other
π
i srsly dont know π please help
why do you... define
why
warning
actually probably depends on the system
can't you just use the numbers
You should use consts
Its 250 instructions
It's 250 words that are now 100% synonymous with those numbers in every context
Namespacing please
I like C
crazy
if you're using raw C then at least prefix the opcode swith OP_
typically raw C means you prefix stuff to names
no
you can insert IR instructions anywhere in a function
@manual just tells the compiler not to insert a manual return statement if the function returns before via IR (as thatβs not tracked by the compiler)
there are at least 6 hacks throughout the whole project to allow that to work
a
ok ive restricted the dialect of what you can say with exact literals
you can no longer do inline IR with them
but you can still do this
use std/io;
fn `add.works`() {
$assert(42 + 42 == 84, nil);
}
fn `mul.works`() {
$assert(42 * 2 == 84, nil);
}
fn main() {
`add.works`();
`mul.works`();
io::println("All `exact literal` tests have passed!".color("green").reset());
}
My decompiler also has that exact syntax for raw identifiers
It's used in exactly one place in the decompiled codebase
A call to debug.`TestScenarioflagSet( GF1_EV_02_32_03_END )`()
I don't see why spaces would be different from any other letter
because my raw identifiers just put the characters exactly as they are into the IR
Maybe if the ir itself gets confused, that'd cause trouble
which, as expected, causes an IR error if theres spaces
but i dont wanna transform the raw identifier because then its no longer a raw identifier so idk
i tried to specifically refrain from mangling so elle code is compatible with the C abi
Only mangle things that need mangling?
i mean i guess so hm
I need to make my lexer not allow rawing keywords though
what does ` do
Why such a mess? I got 3/(cosΒ²(3x-Ο/4))
try using wolfram alpha
even if it doesn't say steps
cause u can probably multiply out the ^2 and simplify it
Is that?
What language is that..?
its a language im working on called elle
@deep mulch I FINALLY ADDED ELSE IF π
after all this time
this
use std/libc/io;
fn main() {
x := 4;
if x == 1 {
io::cprintf("hi x = 1\n");
} else if x == 2 {
io::cprintf("no way x = 2\n");
} else if x == 3 {
io::cprintf("omg x = 3\n");
} else {
io::cprintf("whaa x = %d\n", x);
}
}
``` when compiled with `--noalloc --nostd --nofmt --nosm` compiles into
```ts
type :ElleEnv = { l, l, l }
type :ElleMeta = { l, l, w, l, l, w, w }
data $.54 = { b "hi x = 1\n", b 0 }
data $.57 = { b "no way x = 2\n", b 0 }
data $.60 = { b "omg x = 3\n", b 0 }
data $.62 = { b "whaa x = %d\n", b 0 }
export function w $main() {
@start
%x.addr.51 =l alloc8 4
storew 4, %x.addr.51
%x.50 =w loadw %x.addr.51
%tmp.53 =w ceqw %x.50, 1
jnz %tmp.53, @ift.53, @iff.52
@ift.53
%tmp.55 =w call $printf(l $.54, ...)
jmp @end.52
@iff.52
%x.50 =w loadw %x.addr.51
%tmp.56 =w ceqw %x.50, 2
jnz %tmp.56, @elift.55.0, @eliff.55.0
@elift.55.0
%tmp.58 =w call $printf(l $.57, ...)
jmp @end.52
@eliff.55.0
%x.50 =w loadw %x.addr.51
%tmp.59 =w ceqw %x.50, 3
jnz %tmp.59, @elift.58.1, @eliff.58.1
@elift.58.1
%tmp.61 =w call $printf(l $.60, ...)
jmp @end.52
@eliff.58.1
%x.50 =w loadw %x.addr.51
%tmp.63 =w call $printf(l $.62, ..., w %x.50)
jmp @end.52
@end.52
ret 0
}
me
close enough
:3
Isn't else if kinda trivial to add
well i mean it was sorta easy after messing with it for like 20 mins
its easy on paper but implementing it is kinda annoying
Nah, just need to add one more clause in the parser after else
my parser isnt a traditional recursive descent parser
fn parse_if_statement(&mut self) -> AstNode {
self.advance();
let tokens = self.yield_tokens_with_delimiters(vec![TokenKind::LeftCurlyBrace]);
let expression = Statement::new(tokens, 0, &self.body, self.shared).parse().0;
self.expect_tokens(vec![TokenKind::LeftCurlyBrace]);
self.advance();
let body = self.yield_block(false);
let mut elifs: Vec<(Box<AstNode>, Vec<AstNode>)> = vec![];
let mut else_body: Vec<AstNode> = vec![];
loop {
if self.current_token().kind == TokenKind::Else {
self.advance();
if self.current_token().kind == TokenKind::If {
self.advance();
let tokens = self.yield_tokens_with_delimiters(vec![TokenKind::LeftCurlyBrace]);
let elif_condition =
Statement::new(tokens, 0, &self.body, self.shared).parse().0;
self.expect_tokens(vec![TokenKind::LeftCurlyBrace]);
self.advance();
let elif_body = self.yield_block(false);
elifs.push((Box::new(elif_condition), elif_body));
} else {
self.expect_tokens(vec![TokenKind::LeftCurlyBrace]);
self.advance();
else_body = self.yield_block(false);
break;
}
} else {
break;
}
}
self.position -= 1;
AstNode::IfStatement(IfStatement {
condition: Box::new(expression),
body,
elifs,
else_body,
location: self.current_token().location,
})
}
``` and also the parser isnt the hard part its the codegen thats hard
making everything jump to the next thing properly was annoying
How
It's literally just an if-else with another if in the else branch
And that looks like a pretty standard recdesc to me anyway
the operator precedence parsing is completely different
take a look
its not hard but its easy to get confused in my head
I mean sure if you want to represent it as ```rs
struct IfStmt {
expr: Expr,
then: Block,
elseifs: Vec<(Expr, Block)>,
else_: Option<Block>
}
its ```rs
#[derive(Debug, Clone, Eq, PartialEq)]
pub struct IfStatement {
pub condition: Box<AstNode>,
pub body: Vec<AstNode>,
pub elifs: Vec<(Box<AstNode>, Vec<AstNode>)>,
pub else_body: Vec<AstNode>,
pub location: Rc<Location>,
}
how else can you represent it
i thought i did an interesting thing by making the else_body not an Option<T>, because then having an empty else {} will still make the body be empty and so the compiler will skip the else branch altogether
I'd just go with a ```rs
struct IfStatement {
expr: Expr,
then: Block,
else_: Else,
}
enum Else {
None,
ElseIf(IfStatement),
Else(Block),
}
Or just have it always be a Block, which has 0, 1, or N elements depending on style
hmmm actually a good idea
i might do that thank you
but it would be a Vec<Else> surely
oh its recursive i didnt notice that lol
this really looks like a parser representation of
if true {
...
} else {
if true {
...
}
}
``` lmao
beautiful
Yep
for the longest time thats basically what i was doing anyway
but its more of a syntax hack than a language feature
fn char::unicode_length(char self) {
if (self & 0b10000000) == 0 {
return 1;
} else { if (self & 0b11100000) == 0b11000000 {
return 2;
} else { if (self & 0b11110000) == 0b11100000 {
return 3;
} else { if (self & 0b11111000) == 0b11110000 {
return 4;
}}}}
}
Sure you'll end up with multiple consecutive labels at the end, but if that causes issues for your backend then said backend sucks
nope i dont think it would
Binary integers arent a C thing until C23, thats wild
is this a sane way to test this???
fn main() {
`if.works`();
`if.else.works`();
`if.else_if.picks.if`();
`if.else_if.picks.else_if`();
`if.else_if.else.picks.if`();
`if.else_if.else.picks.else_if`();
`if.else_if.else.picks.else`();
`if.else_if.1.else_if.2.picks.if`();
`if.else_if.1.else_if.2.picks.else_if.1`();
`if.else_if.1.else_if.2.picks.else_if.2`();
`if.else_if.1.else_if.2.else.picks.if`();
`if.else_if.1.else_if.2.else.picks.else_if.1`();
`if.else_if.1.else_if.2.else.picks.else_if.2`();
`if.else_if.1.else_if.2.else.picks.else`();
$println("All `if statement` tests have passed!".color("green").reset());
}
im glad i even wrote a test for this because it turns out i was handling the label wrong when theres a bunch of else-ifs but no else
utils.c: Line 189
switch (opcode) {
Such is the life of a c
i mean what else could i do in C++

