[a / b / c / d / e / f / g / gif / h / hr / k / m / o / p / s / t / u / v / vg / vm / vmg / vr / vrpg / vst / w / wg] [i / ic] [r9k / s4s / vip] [cm / hm / lgbt / y] [3 / aco / adv / an / bant / biz / cgl / ck / co / diy / fa / fit / gd / hc / his / int / jp / lit / mlp / mu / n / news / out / po / pol / pw / qst / sci / soc / sp / tg / toy / trv / tv / vp / vt / wsg / wsr / x / xs] [Settings] [Search] [Mobile] [Home]
Board
Settings Mobile Home
/g/ - Technology

Name
Options
Comment
Verification
4chan Pass users can bypass this verification. [Learn More] [Login]
File
  • Please read the Rules and FAQ before posting.
  • You may highlight syntax and preserve whitespace by using [code] tags.

08/21/20New boards added: /vrpg/, /vmg/, /vst/ and /vm/
05/04/17New trial board added: /bant/ - International/Random
10/04/16New board for 4chan Pass users: /vip/ - Very Important Posts
[Hide] [Show All]


Janitor acceptance emails will be sent out over the coming weeks. Make sure to check your spam folder!


[Advertise on 4chan]


File: uli3wmg5i7vg1.png (1.22 MB, 3500x2144)
1.22 MB PNG
>WHY SHOULD I USE LUA?
Lua is the greatest embeddable scripting language of all time! It's very fast and compatible because it's written in ANSI C, and it's small enough that it can be embedded anywhere. The language spec is very small, with just 1 of every type (1 number type, 1 data structure type, etc.) It has very advanced metaprogramming features. It can be used as a simple config language but is flexible enough to be an advanced programming language in its own right. Lua is ideal if you want to implement scripting bindings on top of a C application, or use C libraries though FFi.

ITT: Share your favorite Lua-related technology

>backend web development (production ready)
https://leafo.net/lapis/

>socket scripting (for writing a game server or a custom chat server or something)
https://lunarmodules.github.io/copas/

>game development
https://love2d.org/
>>
>>109231461
>words words words
No one cares, trans.
>also
That pic looks like some trans projection. Remove it now, codetrans
>>
File: x3u8zKF.png (157 KB, 700x1769)
157 KB PNG
>>109231473
Congrats on first post
(You)
>>
>>109231461
Anyone know a Nintendo 64 emulator with Lua scripting support? Emulation General Wiki isn't helping here.
>>
BTFOd by AngelScript
mpbp
>>
>>109231461
>ITT: Share your favorite Lua-related technology
This book by the textadept creator is pretty useful: https://orbitalquark.github.io/lua-quick-reference/
>>
>>109231495
That's a cool idea, let me know if you find one
>>
>>109231508
I haven't heard of that, it looks useful
Although the official Lua book (PIL) is extremely good if you didn't know, there is pretty much no need for anything else: https://www.lua.org/pil/
And the reference manual which is a stripped down version of PIL: https://www.lua.org/manual/5.1/
>>
>>109231523
Looks like BizHawk and mupen64-rr-lua are my best options.
>>
>>109231461
i hate lua
i hate the syntax, it just doesnt feel comfy programming it
>>
>>109231762
I disagree, Lua syntax is very comfy.
Keyword-heavy syntax without a lot of semicolons or braces in general looks really nice.
>>
>>109231773
almost the complete opposite :c
unfortunately python is my favorite syntax
its also my comfiest language even though it can be quite shit
I dont know any other languages where you just do
myshit = "this"
or whatever without var, let, :=, local
Python code is really nice to look at since your variable names and function calls are the "focus" instead of keywords or weird syntax
Stuff like **kwargs looks ugly though, but type hints with myfoo:str is quite nice, though I'm not sure if I perfer it to char* myfoo
Lua also looks to "nested" but I cant remember if this is a code style thing or a language thing
>>
File: lua.gif (69 KB, 260x261)
69 KB GIF
Lua is very based.
>>
>>109231461
>prosody xmpp server
>awesomeWM
>openresty
>luanti
>>
>>109231829
>I dont know any other languages where you just do
>myshit = "this"
>or whatever without var, let, :=, local
Lua can, but you will probably say it's fake (global table index instead of stack variable assignment). To be fair this is probably one of the most garbage pieces of Lua design that they refuse to fix.
Lua 5.5 added a `global` keyword, but it's just a strictness filter that throws if you don't predeclare your globals, it doesn't make local default which is what 99% of people meant when they said Lua should have a global keyword. Oh well.
>>109231912
Based, good additions
>>
File: Lisp-tan_vs_C-tan.png (613 KB, 640x900)
613 KB PNG
For me it's Lispy Lua.
>Fennel is a programming language that brings together the simplicity, speed, and reach of Lua with the flexibility of a lisp syntax and macro system.
https://fennel-lang.org
>Lua Common Lisp. An implementation of Common Lisp targeting Lua.
https://codeberg.org/gsou/LCL
>gLua is a Lua frontend on Guile platform. Guile is the GNU Ubiquitous Intelligent Language for Extensions, and the official extension language of the GNU project.
https://gitlab.com/NalaGinrut/guile-lua-rebirth
>>
>>109232004
>you will never be a real lisp
>>
>>109232013
What is a "real lisp"? John McCarthy's LISP?
>>
>>109231461
I am making a heavily moddable Minecraft remake in C, with the entire gameplay aspect being controlled by LuaJIT. Best of both worlds. It's more moddable than Garry's Mod internally.

<3 Lua
>>
>>109232033
>inb4 lol 47 fps
i have a dual core & integrated graphics and i have maxxed out all settings and it's opengl 2.0
>>
>>109232033
Cool project, but I hope you already know about Luanti (formerly minetest) and chose to make this anyways
>>
>>109232033
>minecraft clone #3094809485
nice
>>
>>109232033
I'm still fan of it
>>
>>109231461
is it really fast?
aren't all scripting languages slow as fuck? what metric do they use to say it's fast?
>>
>>109232952
>aren't all scripting languages slow as fuck?
This is mostly a misconception that began with older managed/VM language runtimes, and nowadays the big example of a slow scripting language is python.
For an example of an extremely fast scripting virtual machine that rivals native code speed, just look at modern JavaScript engines (but with JS the language is shit).
Lua is fast *and* the language is good.
>what metric do they use
It's not really something "they" claim, Lua has been around since 1993, find any benchmark in the world that includes Lua and you will see how fast it is.
>>
>>109232966
and what can I do with it besides nvim plugins?
>>
>>109232993
It's not really a standalone do-everything language because you're supposed to embed it into other programs and add features yourself (it's minimal by itself, you write a C program and include Lua as a library inside it, and then expose bindings to it)
So you can use it to create a scripting layer for your software. Other than that, you'd have to use other projects that embed Lua, neovim is just one exmaple, other examples include openresty (nginx fork) or love2d (game development)
>>
>>109232993
use it as a scripting language but realize you just want to make your own after you get obscure run-time errors that don't actually tell you anything about the problem.
>>
>>109233283
Lua has really simple error messages and stack traces, there's like 5 possible errors it can emit and I wouldn't call any of them obscure
>>
You can now use lual on lovr! *

* If you compile lovr yourself
>>
File: 1760271481339258.png (2.28 MB, 1087x1213)
2.28 MB PNG
>>109231461
Its only use is letting people write scripts for your program that you know will be sandboxed. This goes out the window the moment you keep FFI, which is the only way to make it not run like shit in real tasks, at least when the JIT feels like it.
There is no point in using this language besides that peace of mind. I'm not joking.
>>
>arrays start from fucking 1
>>
Can I use Lua as just like a regular script language?
I use Ruby for a bunch of little tasks on my computer. Many little ruby programs automating things for me. Like certain backups. Sending popups. Grabbing data from a sensor and writing it to a web page so anything can read it. Can you do that is Lua?
>>
I use LuaJIT for everything except web browser scripting. standalone programs, extension of other programs, glue for library calling. it's fast, versatile and comfy.
>>
>no continue
>>
File: moon.jpg (108 KB, 800x600)
108 KB JPG
https://luakit.github.io
>>
>>109234465
Actually, Lua is a garbage sandboxing language, so that use case is very far down on the list.
>>
>>109234480
Lua tables aren't arrays.
>but they have an array-like compo-
Shut up
>internally, numeric keys are stored as-
Can it, FAG.
Lua tables are not arrays. Don't make me break out the full explanation.
>>
>>109235148
Yeah you could, but it isn't what it was made for.
>>
fun fact: it takes fewer than 200 bytes of code+data to load lua library and execute a lua file.
>>
>>109232033
very good bro! tell me, siir, witch cloud model does i need to use to make this like me?
>>
I'm more of a micropython guy
>>
>>109231461
the language is ass im sorry
the only saving grace is that its easily embeddable and fast, but thats why people put up with its weirdness. metatables are a good idea tho
>>
>>109234480
In C arrays are 1 indexed
>but it starts from 0
It starts from offset 0 which means the first element.
>>
>>109234417
what's lual
>>
ITT: superior to a general in every way
>>
>>109242562
Lua Lizards
>>
>>109242562
roblox lua
>>
>>109246003
That's Luau
>>
what if
<script type="text/lua"></script>
instead text/javascript
>>
>>109246830
The world would be a better place if it was like this from the beginning.
Though... it's more likely than you think.
I've been working on a project that does this for the better part of a year. You load scripts exactly like that. It's a webassembly Lua-JS FFI but it needs work before it's stable.
For existing options, there's wasmoon, but it's not very serious (type marshaling is flaky and it doesn't do cross-runtime GC) and Fengari which isn't webassembly and isn't a real Lua VM. Fengari isn't bad though.
>>
>>109231461
What about TCL? Is it also small enough?
>>
>>109246843
TCL is a few megabytes
Lua is WAY smaller, it's not even close.
>>
>>109246859
What about TinyLisp?
>>
>>109246840
256kb WASM or even less that can run lua and manipulate DOM would be awesome
>>
File: 1767330458805953.jpg (122 KB, 1024x1010)
122 KB JPG
>>109246037
Yea, I know.
>>
>>109246874
I haven't worked on it for a while, but the latest I had it compiling down to 375kb. With certain emcc flags I managed to bring it down to closer to 250kb but it hurt the Lua VM performance a lot, so under 400kb is a more reasonable target.
A lot of that is the JS side (type marshaling alone is 1k lines of JavaShit) and additional logic in Lua, like an extension of the garbage collector for circular references between JS and Lua heap.
God I really need to work on this again. I would personally eat my own dogfood and use it over the alternatives already even though it's not done yet since Lua in the browser is just so underserved (there's not many options)
I'm considering removing a bunch of stuff from it just so I can reduce debugging complexity and get it to a state I'm comfortable putting on github.
>>
>>109246955
lua and js are close enough that requiring a luajit-sized (300 kb) blob just for running one vm in another is just tragic and a loss of performance, compared to transpiling.
>>
>>109247004
They are close on the surface but their VMs are nothing alike.
>>
>>109247004
Coroutines and most metamethods can't be represented in JS btw. So you wouldn't be able to support the whole language spec this way.
>>
>>109247076
lua coroutines map into js generators, metamethods map into js proxy and/or replacing operators with explicit function calls.
>>
>>109247194
Using generators as ghetto coroutines is going to be harder than it looks when you have stuff like a coroutine resuming a coroutine resuming a coroutine, etc. but yeah it could work.
>>
aren't there like five different and backwards-incompatible Lua's? each version is slightly different and each JIT is slightly different.
>>
>>109247254
Not really. The closest thing I can think of to what you're implying is that Lua 5.2 changed how function environments work (a 5.1 feature) but that's about it. Lua 5.5 is backwards compatible with Lua 5.2 and most Lua 5.2 code that doesn't touch fenvs will also work with 5.1.
>each JIT
There is only 1 LuaJIT, written by Mike Pall, which is the 5.1 spec with some 5.2 features backported.
>>
>>109247274
thanks. as for JITs I meant various commercially-supported forks like Luau (Roblox), GLua (Facepunch), OpenResty LuaJIT etc
>>
>>109247284
GLua is just PUC Lua 5, and OpenResty uses Mike Pall's LuaJIT
Luau yeah I guess.
>>
>>109247296
5.1*
>>
>>109246830
Funny you say that, once upon a time back in like '02 I hacked together an experiment like that.
>>
>>109247296
>GLua is just PUC Lua 5
GLua has C-style logic operators and comments
>>
>>109234480
Ive only seen nocoders cry about this
>>
File: 1762582261129005.jpg (265 KB, 880x495)
265 KB JPG
>>109231461
Mike Pall returns to discuss new syntax additions to be added in LuaJIT 3.0
https://github.com/LuaJIT/LuaJIT/issues/1475
Some of them are already backported to LuaJIT 2.1
https://github.com/LuaJIT/LuaJIT/issues/1476
My favorite are
>ternary
>short functions
>safe navigation operator
>>
>>109248494
>returns
Pretty active on github actually, idk why I thought he was gone
>>
>>109248494
>ternary
bro you literally call already do that with "and" and "or". do you really think saving to type 3 characters is a significant improvement?
>>
>>109248494
I love the idea of short functions, but that syntax is kind of garbage.
The safe navigation operator is definitely my favorite from the list, if I had to pick 1 feature to add to keep Lua de-bloated that would be the one.
>>109248854
Not a ternary operator, that's just short-circuited logical operators. Try it yourself and see `a and false or b` returns `b` regardless of whether `a` is true or not. If it was a real ternary operator then it would return false if a was true and b if a was false.
>>
>>109231461
I just recently looked into Lua because I got interested into prototype based OOP languages like self and io and to me their object model implementation makes more sense than a class-instance based one

Lua is already similar in terms of delegation to prototype OOP and it's really easy to implement it under Lua. I asked chatgpt to write a simple library and seems to work pretty fine, at least for toying around

 
-- object.lua

local Object = {}
local Meta = {}

local function lookup(self, key)
local value = rawget(self, key)

if value ~= nil then
return value
end

local proto = rawget(self, "__proto")

if proto then
return lookup(proto, key)
end
end

Meta.__index = function(self, key)
local value = lookup(rawget(self, "__proto"), key)

if value ~= nil then
return value
end

local forward = lookup(self, "forward")

if forward then
return forward(self, key)
end
end

function Object:clone(slots)
local obj = slots or {}
rawset(obj, "__proto", self)
return setmetatable(obj, Meta)
end

function Object:proto()
return rawget(self, "__proto")
end

function Object:slotNames()
local names = {}

for name in pairs(self) do
if name ~= "__proto" then
names[#names + 1] = name
end
end

return names
end

function Object:forward(name)
error("message not understood: " .. tostring(name), 2)
end

setmetatable(Object, Meta)

return Object




So I can do

local Animal = Object:clone {
speak = function()
print(self.sound .. "!")
end
}

local Dog = Animal:clone {
sound = "woof"
}

Dog:speak()

>>
>>109250086
I personally don't like it (tables are enough) but people have been doing this for a really long time, it's a completely valid use of metatables
http://lua-users.org/wiki/SimpleLuaClasses
>>
If you use libev as an event loop in your host program you can trivially access it from lua with lua-ev for timers, io watchers etc. Probably works with uv, too.
I'm also a fan of luaposix to access the complete (?) posix C api from lua.

Is there an alternative to luafilesystem? I'm not using it simply because it pollutes the global namespace.
>>
File: screen.png (22 KB, 656x163)
22 KB PNG
>>109250086
Btw for the specific example you showed, you can just do it out of the box using __index, without all the class boilerplate
>>
>>109250268
>Is there an alternative to luafilesystem? I'm not using it simply because it pollutes the global namespace.
Does it set a bunch of globals or something?
>>
>>109250302
>Does it set a bunch of globals or something?
It registers the module globally as lfs when require'd. Years ago this also used to break lua_ls, no idea if that is the case anymore.
It won't be fixed because there's probably lots of software that depend on that behavior.
>>
>>109250086
>function Object:proto()
> return rawget(self, "__proto")
>end
Does this actually work? There is no self reference anywhere.
I'm too used to just creating closure based classes, even tho it's heavier on memory (if you dont use references to functions instead of creating a new function every time you instance a class)
>>
lisp lost, therefore nothing else matters besides python + optimized c/asm functions
>>
>>109250362
NTA but it's gay syntactic sugar, if you define a function with the colon syntax after the function keyword like
>function foo:bar() end
It automatically implies a first parameter called self.
>>
>>109250362
It works because Object:proto() is sugar for Object.proto(self) (note the : vs .)
>>
>>109250391
>>109250396
Oh, i see. Usually I do this
function f(s)
end

local a = {}
a.f = f
a:f()


instead of

local a = {}

function a:f()
end

a:f()

I thought it only added the table as the first parameter during "using" and not during "writing".
>>
>>109250233
That's actually the "opposite" of the prototype OOP object model (classless objects) inplemened in languages like self, Io and original JavaScript

Tables are just flexible enough to be able to reimplement the "inheritance by delegation" model

https://bibliography.selflanguage.org/_static/organizing-programs.pdf
>>
>>109250473
That's just how Lua tables work already without any extra work doe.
Same with JavaScript objects
>>
this is how i do classes btw desu not sure if matters thoughbeit
local function class()
local a = {}
a.type = "class"

return a
end

local function Animal()
local a = class()
a.type = "animal"

a.eat = function(food)
end

return a
end

local function Canine()
local a = Animal()
a.type = "canine"

a.bark = function()
print(a.type, "barks")
end

return a
end

local meow = function(s)
print(s.type, "meows")
end

local function Feline()
local a = Animal()
a.type = "feline"

a.meow = meow -- you must use here : but it will use less memory

return a
end
>>
>>109231461
For a few weeks I ran the AwesomeWM window manager. It uses Lua instead of a configuration syntax. It was really annoying to work with. I remember needing to set a variable and it was ignored. Finally I set the variable to the value I wanted twenty times within the Lua script in order to get it to work.
So, yeah, I think Lua is a bad idea.
If you want a tiny language inside of your program, why not BASIC or Forth?
>>
>>109250494
>That's just how Lua tables work already without any extra work doe.
Tables are more general than that, that's why you write a library to "restrict" to a specific protocol

To implement the Object, the Lobby and multiple inheritance you want to write down the object model to avoid repeating every time the same code for any object

> Same with JavaScript objects
That's not a coincidence, js is heavily inspired by Self.
Its VM was the first dynamically typed object-oriented VM to achieve performances almost on par of optimized C++ for many workloads, and many techniques that later became standard in modern language runtimes:
> Adaptive compilation
> Inline caches (building on earlier work in Smalltalk)
> Polymorphic Inline Caches (PICs)
> Type feedback
> Dynamic recompilation

Then Js later introduces classes as syntactic sugar but still with prototypes under the hood

The problem is that
- Self is "dead-ish" (not really dead but being live image-based env l don't see it making a comeback)
- Io is still developed but too niche and tarteg wasm by default
- js ecosystem is too web-centric

Lua is a nice modern compromise because it's almost like those languages although more general
>>
>>109250288
yes, the object library basically does that

But I rather have to type
 
UDPconnectionTrait = Conncection:clone {
-- overwrite functions
}
UDPConnection = UDPConnectionTrait:clone {
transport_proto = "udp",
-- representations parameters
}


rather than setting every time the metatables by hand
>>
>>109234480
Problem?
>>
>>109231461
>array index starts from 1
HAHHAHAHAHHAHAHAH
>>
>>109252824
> Using a number from indians
Nice try Rajesh
>>
>>109231461
Ask yourself why lua torch lost to pytorch
>>
>>109253066
There is no correlation between Lua and machine learning
>>
>>109248494
not looking forward for new incompatible syntax.
in particular, ternary operator reusing : is a terrible idea. consider:
value = myobj ? myobj:func() : otherfunc()

oops, now value is either myobj or func():otherfunc()
>>
>>109248494
>const
HECK YES
time to mog jeetscript
>>
>>109254235
PUC Lua already has const doe
>>
>>109254004
>Due to a syntactical ambiguity, expression b cannot directly contain a method call obj:method(). For this case, use parentheses: cond ? (obj:method()) : default
>That said, nope, ?: stays. I'll confess: I'm a heavy user. Addicted, even.
>>
>>109254275
In the most retarded way possible
local why <const> = "just why";
>>
>>109254742
damn. I'm sticking to lua 5.1 + FFI subset.
>>
i'm genuinely thankful for this thread. now i know i should never touch lua in my life for any reason whatsoever, as it seems to be another memelang for faggots.
>>
File: 55aKxWj.png (162 KB, 887x1114)
162 KB PNG
>>109255360
Okay, I'm thankful that you posted this and bumped the thread
>>
love2d is really cool. too bad it uses Lua.
>>
>>109256638
Love2d is literally just a collection of Lua bindings for C libraries like box2d and SDL/OpenGL
So really cool my ass. If you're a lua hater then "love2d without Lua" would just be using those libraries directly.
>>
>>109256924
>would just be using those libraries directly
or with some other scripting language which doesn't suck
>>
>>109257064
Which one?
>>
>>109252819
It's really fun porting stuff from C or JavaScript. Speaking of JavaScript, that's the language that should be used for embeddable engines instead of Lua. It is just so much better for that purpose. Instead, it's being used server-side and to make desktop OSes. (???) Unfortunately Duktape is slower so Lua gets used instead simply because it is faster.
>>
>>109252824
>t. nocoder
>>
>>109257128
odin, it has those libraries in the default vendor package
>>
Bump
>>
File: 1329558295240.jpg (202 KB, 889x856)
202 KB JPG
>>109257231
>>109252824
the superior alternative is being able to specify the bounds of the array on allocation
you can start from 0 or 1 or -50 or whatever you want to
t. fortran

(I will admit MAYBE the compiler adds microscopic overhead by starting from a different offset than 1 and idk whether or not this is the case)

also inclusive-inclusive is superior fuck off with your last index not being included
>>
>>109259510
>>109231461
>>109255427
don't worry i'm saving this thread forever
>>
File: 1754566619821721.png (35 KB, 200x200)
35 KB PNG
actually you should be using lus (or microlua)
https://github.com/lus-lang/lus
https://github.com/lus-lang/microlua
>>
bump
C and Lua. nothing more
>>109259784
lua is lua
>>
File: monkas.png (401 KB, 2801x2121)
401 KB PNG
>>109259784
>Contributors: loukamb
>>
>>109261261
qrd?
>>
>>109262598
MORTAL KOMBAT!!!!
>>
>>109231461
pythoids will NEVER understand how cozy it is to program in a language without importing a a Schindlers list of libraries to "compete" with elegant simplicity and functionality of core lua.
>>
>>109231461
>>game development
>https://love2d.org/
can LLMs into this shit? I do like how it's sort of simple to set up but it might be too obscure
>>
>>109263959
LLMs should have it in their training data, love2d is even less obscure than something like raylib.
But you can just give the docs to your AI slop agent anyway
>>
>>109263972
well yeah it's just that docs bloat context
that said python might need a lot of boilerplate to get what this love thing offers intrinsically so it's not so easy to decide
>>
I used to love Lua. I read the manual in bed at least once a month. I built a scriptable game engine in C using SDL2 and Lua for making the actual games once. I also used it on Garry's Mod a lot. But it's been a while since I've touched it.
>>
>>109256924
Löve is great for building stuff fast and messing with it and having fun
>>
>>109263959
It should be in the dataset because it has been around for a very long time.
>>
>>109231473
Stop spamming, faggot.
>>
>>109255360
Sneed
>>
File: IMG_3243.png (618 KB, 736x736)
618 KB PNG
>>109267915
>Stop spamming, faggot.
>>
thread adoption has been delayed
>>
>>109269653
SnailGODS won
>>
>>109270192
many such cases
>>
My thread had a good life, and now it wants to die peacefully... please stop bumping it...
>>
>>109274333
Excellent trips, sir. Would you like to have literally any one granted, inclusive of omnipotence over moderators?
>>
lua is based, 'tan' related stuff is cringe, simple as
>>
File: 7IuEfTP.png (110 KB, 1151x554)
110 KB PNG
>>109274675
math.tan()
>>
>>109274724
>lua-tan
>no tan
>>
File: IMG_3366.png (321 KB, 666x666)
321 KB PNG
>>109272216
>snailcatGODS won
>>
>>109231461
>1-indexed
>but index 0 can have data set manually
>but if you do, it doesn't contribute to the table length
your language is a fucking joke
>>
>>109277828
Table length isn't real, just set a property n
>>
>>109234480
>anon has 1 thumb and 7 fingers
>one nut and no benis
:DD:D
>>
>>109277882
>Table length isn't real
This
>>
>>109277882
>>109279001
your language is a fucking joke
>>
>>109280055
holy sneeding
>>
File: pyjeet.png (250 KB, 718x588)
250 KB PNG
>>109250382
good morning pythonic sir
>>
>>109253790
http://torch.ch
https://github.com/torch/torch7
>>
File: maxresdefault.jpg (80 KB, 1280x720)
80 KB JPG
>>109231461
oh yeah the gmod language
>>
>>109285484
>mfw nobody backported fancy pyjeet torch to OG lua
Sad



[Advertise on 4chan]

Delete Post: [File Only] Style:
[Disable Mobile View / Use Desktop Site]

[Enable Mobile View / Use Mobile Site]

All trademarks and copyrights on this page are owned by their respective parties. Images uploaded are the responsibility of the Poster. Comments are owned by the Poster.