Prime Reacts: Creating JSF#*!

Поділитися
Вставка
  • Опубліковано 21 лис 2024

КОМЕНТАРІ • 131

  • @GameJunkiesChannel
    @GameJunkiesChannel Рік тому +280

    Both of us watching vids at 1.5x ain't going to cut it!!!

  • @heron619
    @heron619 Рік тому +281

    Imagine having such a low level in depth understanding of a language that even Prime is impressed by it just to use it to create a meme JSF*ck compiler. What a flex!

  • @amr3162
    @amr3162 Рік тому +68

    0:37 creating a slice of a string in V8 just creates a `SlicedString` object which is like a `string_view` it only contains reference to start and end. This actually leads to some funny and unexpected results like when you take a small slice of a 100mb string, the garbage collector in V8 is not able to collect the larger string because the SlicedString holds a reference to it.

    • @ThePrimeTimeagen
      @ThePrimeTimeagen  Рік тому +29

      that was my suspicion and i wish i would of said that because this comment would of been amazing!

    • @vytah
      @vytah Рік тому +11

      @@ThePrimeTimeagen Fun fact: Java used to work like this until version 7 update 6, when it started to copy the substring into a new array. Yes, it was a change in a patch release, and yes, tons of code that relied on the previous behaviour suddenly started sporting quadratic performance instead of linear. According to the API, both behaviours are correct, so theoretically it was the API users' fault that they were relying on undocumented behaviour.

    • @fulconandroadcone9488
      @fulconandroadcone9488 Рік тому

      When he asked the question I thought about and 15 seconds latter I thought, well how do you handle that in a garbage collector? Do you split the string in 3 parts so only one can be retained? How do you handle that? Ah well I guess they would do just a copy and have some parts of the string duplicate. Guess not.

  • @seannewell397
    @seannewell397 Рік тому +78

    I love it when you realized about interpolated property access via indexing. Your brain aligned but your heart sank.

  • @godowskygodowsky1155
    @godowskygodowsky1155 Рік тому +55

    In college, my systems professor once said, "If you're programming in a high-level language like C..."
    I forget what the context was or how that sentence ended, but those words will echo in my head until the day I die.

    • @goblincrimes8524
      @goblincrimes8524 11 місяців тому +5

      Any language is high level if you program by switching individual bits on and off

    • @W0lfCL
      @W0lfCL 8 місяців тому +4

      I bet ur college professor was an experienced computer scientist from 1970's-80's who coded in machine code, a, b and assembly
      Ofc C is high level for him

    • @VivBrodock
      @VivBrodock 8 місяців тому +2

      did my man insert punch cards into his room sized computer?

    • @kirbykilledgod
      @kirbykilledgod 4 місяці тому

      In an exam I had to write C was a high level language because you were not manually changing registers, it drove me so mad

  • @techwithattila
    @techwithattila Рік тому +173

    Happy that today I learned something which I can use in my team’s codebase. I’m sure they will like it

    • @DesTr069
      @DesTr069 Рік тому +27

      Imagine you see there’s a new PR up, one file added, +200k lines, you run it and it just logs a message LMAOOO

    • @xarunoba3894
      @xarunoba3894 Рік тому +24

      For "obfuscation purposes"

  • @kahnzo
    @kahnzo Рік тому +23

    Your face at 9:56 is amazing. This is the reason that I watch these mostly throwaway videos, that moment that you realize the horror....

  • @Richard-sp3ul
    @Richard-sp3ul Рік тому +23

    Hey buddy on Banana: as an English from Bristol. We say put wa'er in the baff. We don't mess about in 'Brizzle', we just say bannaner . On another note so much of the code community is defined by American English and thinking, as an English, I still have to process what you hell you guys are talking about. But I love it.

  • @KyleHarrisonRedacted
    @KyleHarrisonRedacted Рік тому +12

    10:50 I remember the first time learning a similar “trick”/“language feature” in php that lets me just dynamically reference an object BY string and thus access any members that dynamically. I wondered.. JavaScript could do that.. And sure enough it could. But in was a flash Developer at the time, and knowing ActionScript2 was based off ECMAScript just as JavaScript was.. sure enough… could do it there too. I suddenly became way too loose and dangerous with that knowledge lol

  • @marcotroster8247
    @marcotroster8247 Рік тому +9

    If you watched the video until the end, you would have seen the guy transpile his transpiler into JSF*ck as well which makes it even more funny because he actually deduced an entire language with his charset 😂

  • @channel_zero
    @channel_zero Рік тому +6

    I have never seen Prime be so shocked and appalled and impressed simultaneously. At 10:08, you can see th- entire head-brain explode.

  • @SimGunther
    @SimGunther Рік тому +52

    TECHNICALLY you could write low level stuff in JS or Haskell, but the results are...macabre to say the least.

    • @el.bromas
      @el.bromas Рік тому +4

      macabre

    • @kellybmackenzie
      @kellybmackenzie Рік тому

      Haskell actually has really good C interop! And it has pointers too. You can do manual memory allocation/management with Haskell just fine (in the IO monad, of course), it just sadly isn't fast as C (for obvious reasons).
      GHC (the main Haskell compiler) has a lot of tools that make it really easy to call C from Haskell and vice versa, it's super neat! The only downside is that cross-compilation is really hard with GHC.

  • @M3R14M.
    @M3R14M. 9 місяців тому +1

    3:20 LOL, the guy is so obviously not British. By the way he pronounces words ending with 'd', I'd say his native language is Dutch.

  • @PhilipAlexanderHassialis
    @PhilipAlexanderHassialis Рік тому +6

    10:05 "He is beginning to believe"
    15:31"Do you want to know more?"

  • @7heMech
    @7heMech Рік тому +7

    If they only compiled the compiler, it would have been perfection.

  • @mario7501
    @mario7501 Рік тому +7

    I have never written javascript, but I'm also no longer surprised that I haven't been able to switch Microsoft accounts when logging into Microsoft teams without deleting my browser cache.

    • @fulconandroadcone9488
      @fulconandroadcone9488 Рік тому

      I don't think that has as much to do with JS as it has to do with Microsoft

  • @tokiomutex4148
    @tokiomutex4148 Рік тому +19

    let first = undefined;

  • @theodorealenas3171
    @theodorealenas3171 Рік тому +8

    This is one of the things where C would actually be easier to use for. Because chars are one byte integers. I don't know, but the same tricks would probably be much easier.

    • @RunningRay9
      @RunningRay9 Рік тому +3

      but even if it's easy to construct any string, i don't think in C you can run strings as code tho

    • @dancom6030
      @dancom6030 Рік тому +1

      This sort of thing would be impossible in c because it's a compiled language with no type coercion.

    • @theshermantanker7043
      @theshermantanker7043 Рік тому

      ​@@dancom6030Type coercion is literally everywhere in C, there's a reason it's a weakly typed language

    • @dancom6030
      @dancom6030 Рік тому

      @theshermantanker7043 yeah idk what I was saying lol. Technically this kind of thing actually is possible because global strings in C are executable. It's just that that code would then be highly platform dependent.

  • @HelloThere-xs8ss
    @HelloThere-xs8ss Рік тому +4

    This was actually the primary way JS was to be written. The people got it wrong.

  • @EwanMarshall
    @EwanMarshall Рік тому +1

    I would point out, we figured this out in C ages ago, and there are so many ways to do it there we ended up with the international obfuscated c code contest, ioccc :D

  • @dus10dnd
    @dus10dnd Рік тому

    "It sucks to invent something and also get it wrong." So much truth!

  • @DrewryPope
    @DrewryPope Рік тому +5

    "you don't make a compiler by accident" ehehehehehehe are you sure

  • @rthurJ
    @rthurJ Рік тому +22

    It's really only missing a benchmark, pretty sure going low level like that is going to yield some sweet performance gains /jk

    • @theodorealenas3171
      @theodorealenas3171 Рік тому +3

      lol. I made a BF program once which did division, and to divide 2 digit numbers it took like half a second? I don't remember. That was BF, not JSF.

    • @elin4364
      @elin4364 Рік тому +1

      I mean in the end its basically just eval-ing a string of normal js code right? So once you've parsed through everything it should be reasonably fast

  • @DriveandThrive
    @DriveandThrive 5 місяців тому

    Extreme extreme JS : we can convert all of JavaScript to only Zero's and one's and write anything mind blown**

  • @godowskygodowsky1155
    @godowskygodowsky1155 Рік тому

    3:10 Intrusive R and linking R are common in SBE because Anglophones hate vowel hiatus.

  • @seannewell397
    @seannewell397 Рік тому +2

    The feels when he reached for hex! THE FEELS

  • @danser_theplayer01
    @danser_theplayer01 2 місяці тому

    Mfer out there writing code in Galactic Basic language from Star Wars.

  • @antsii
    @antsii Рік тому +1

    love that winky winky after you got all that delicious food

  • @shimadabr
    @shimadabr Рік тому +1

    Imagine an employee rage quitting a small company and changing an entire project to work based on this unholy implementation haha. Wrap everything to work like this underneath the hood and only the next cursed employee would notice it hahaha.

  • @luisguilherme2403
    @luisguilherme2403 Рік тому

    Bro just summoned food in the middle of the live

  • @ab.3800
    @ab.3800 Рік тому

    I rewrote this “compiler” in about 500 lines of C

  • @beebakrizzle
    @beebakrizzle Рік тому +3

    Make a jsf interpreter in Rust for blazing fast performance

  • @rumplstiltztinkerstein
    @rumplstiltztinkerstein Рік тому +3

    We should create a transpiler that converts javascript code into that format.

    • @KnightMirkoYo
      @KnightMirkoYo Рік тому +4

      This video literally shows it in the end :)

  • @ko-Daegu
    @ko-Daegu Рік тому

    This is helpful really helpful for obfuscation when we pentest web apps

  • @AndrewTSq
    @AndrewTSq Рік тому +1

    Imagine first day at work, and you have to debug jswtf code :) ive seen this been used to obfuscate code for malware, since the virusscanner dont have any idea what is going on.

  • @NuncNuncNuncNunc
    @NuncNuncNuncNunc 11 місяців тому

    @3:25 Don't get Prime started on how brits say "bag" or "flag."
    JS: true + "0" = "true0"
    Also JS: true + true + "0" = "20"
    and since addition is commutative:
    Also JS: "0" + true + true = "0truetrue"

  • @JackDespero
    @JackDespero Рік тому

    I read "JSF" and my brain went to "JeSus, Fuck".

  • @psilogismo30
    @psilogismo30 Рік тому

    The cool thing: JSF#* behaves more consistently than vanilla js!

  • @andythedishwasher1117
    @andythedishwasher1117 Рік тому +1

    I've seen this before and I took it as a kind of thesis on how Javascript is a high level language for a reason. Tbh, it was the first language I was exposed to and I find myself increasingly disliking it the more I explore outward. It's a language made of hacks because 90% of its history consists of people hacking it to do stuff it wasn't previously designed for.

  • @xdman2956
    @xdman2956 Рік тому

    its funny to me that you have to get backslash character despite it being in the character list

  • @martijn3151
    @martijn3151 Рік тому

    The start of the video was right, this truly was some low level JS code trickery.

  • @TeodorDimitrov1991
    @TeodorDimitrov1991 Рік тому +4

    Please watch videos at 1x speed.. otherwise love the content

    • @ThePrimeTimeagen
      @ThePrimeTimeagen  Рік тому +6

      i have stopped doing this as it doesn't allow people to speed tihngs up :)

  • @seannewell397
    @seannewell397 Рік тому

    THE FUNCTION CTOR
    Goooood damn this guy

  • @yeahaddigirl
    @yeahaddigirl Рік тому

    Feed the source compiler into the compiler and make it self contained

  • @RedHandedBug
    @RedHandedBug Рік тому

    "I am that guy" - ThePrimeagen

  • @hexdiqoreprime7974
    @hexdiqoreprime7974 8 місяців тому

    Now this is code.

  • @draguve3821
    @draguve3821 Рік тому

    This is high level rop chaining

  • @loganhall1529
    @loganhall1529 Рік тому

    God had no hand in this

  • @derzw3rg
    @derzw3rg Рік тому +2

    At 10:08 prime had a small meltdown.

  • @samtv19981
    @samtv19981 Рік тому

    Haha I hoped you would cover JSF (Java Server Faces).

  • @isaakarslan9485
    @isaakarslan9485 Рік тому

    I thought this video was going to be about primagen implementing Java server faces in rust 😂

  • @ExpertOfNil
    @ExpertOfNil Рік тому

    Low Level Learning is shaking his head in disgust right now 😝

  • @CaptainWumbo
    @CaptainWumbo Рік тому

    the only usecase for this is obfuscating malicious code. Probably a little more subtly than running the whole application through this, but you could probably sneak a line into an open source project abusing coersion and claim you're a genius who is just doing fast inverse square root.

  • @soyitiel
    @soyitiel Рік тому +2

    Video should have ended at 21:49

  • @Ironication
    @Ironication Рік тому

    God, I love this language.

  • @jacoblockwood4034
    @jacoblockwood4034 Рік тому

    btw for the ppl in chat who are all WRONG: brainfuck is not inspired by javascript, jsfuck is inspired by brainfuck. sorry for the nitpick

  • @heron619
    @heron619 Рік тому +7

    Bananer

  • @ofeenee
    @ofeenee Рік тому

    You can turn an open source JavaScript into a closed source JavaScript available publicly using this compiler. 😂

    • @kebien6020
      @kebien6020 Рік тому +3

      Not really, if you just remove the () at the end you get a function instead of calling it. You can then call .toString() on the function and get the decoded source code.
      For reversing any JSFuck compiler output, and not specifically this one, there is also the option of monkey-patching eval and Function.prototype.constructor to print out their input before eval'ing it. Kinda like this
      const original = Function.prototype.constructor
      Function.prototype.constructor = code => { console.log(code); return original(code) }

  • @ollystoppa9155
    @ollystoppa9155 Рік тому

    Is this a payload obfuscation masterclass?

  • @Veptis
    @Veptis 11 місяців тому

    Hrey hoodie prime? Is this how esolangs started?

  • @suman_js495
    @suman_js495 6 місяців тому

    Really? Is there a compiler that can turn the normal js into that? 😮
    If it does can you share the name of the compiler? Thanks

  • @JhonatasRosendo
    @JhonatasRosendo Рік тому

    I clicked thinking this was gonna be about Java server faces 😅

  • @JacobCanote
    @JacobCanote Рік тому

    No words!

  • @romanmaciel8072
    @romanmaciel8072 Рік тому

    Cool but is that a default dunst notification I see in the corner? Real programmers rice.

  • @venc0r
    @venc0r Рік тому

    I'm dying here

  • @danser_theplayer01
    @danser_theplayer01 2 місяці тому

    They meant low level OF javascript.

  • @draakisback
    @draakisback Рік тому

    I think I want to write a lisp compiler using a JS fuck compiler. I've seen this video before but it's always impressive. Seriously though this is probably the biggest fuck you to any serious JavaScript evangelist. Every time they say their language is so great and so safe, all you have to do is show them this.

  • @economicist2011
    @economicist2011 3 місяці тому

    3:15 He's Bri'ish. He can't help it.

  • @venc0r
    @venc0r Рік тому

    add a stream command !js for it

  • @xBZZZZyt
    @xBZZZZyt Рік тому

    00:40 which JavaScript engine?

  • @Ikxi
    @Ikxi 9 місяців тому

    why at 1.5x??

  • @seannewell397
    @seannewell397 Рік тому

    Legend

  • @4idenn
    @4idenn Рік тому

    Why is this even possible...?

  • @vimaximus1360
    @vimaximus1360 Рік тому +3

    just use rust

  • @sadboisibit
    @sadboisibit Рік тому +1

    By "low level JavaScript" I really hope they mean all the C++ under the hood.

  • @Deepfri3d
    @Deepfri3d Рік тому +3

    Bloody Rust developers, telling us how to talk in English. Stick your Banana in a compiler Developer Disrespect.
    Still better than that Theo guy though.

  • @theideaot
    @theideaot Рік тому

    Like for the floating sandwich

  • @0644dev
    @0644dev Рік тому

    Primeagenanar

  • @TomasKonrady
    @TomasKonrady Рік тому

    try THIS with Rust

  • @unusedTV
    @unusedTV Рік тому

    This guy sounds Dutch, not British.

  • @yuriblanc8446
    @yuriblanc8446 Рік тому

    baNaNa

  • @m1kr0kosmos
    @m1kr0kosmos Рік тому

    the letter d is *bloat*

  • @HaKazzaz
    @HaKazzaz Рік тому

    Hey Prime,
    I'm gonna save this vid for later when I'm next to a 70' TV.
    Thank's for not full screening a coding video :)

  • @brunomello7499
    @brunomello7499 Рік тому

    first hehe