645:
39:
27:
318:. Function calls will require twice as many invocations to begin recording as a loop. Once LuaJIT begins recording, all control flow, including jumps and calls, are inlined to form a linear trace. All executed bytecode instructions are stored and incrementally converted into LuaJIT's
752:, independent of the C compiler. DynASM replaces assembly code in C files with runtime writes to a 'code buffer', such that a developer may generate and then evoke code at runtime from a C program. It was created for LuaJIT 1.0.0 to make developing the just-in-time compiler easier.
361:
form is used for the just-in-time compiler. The interpreter bytecode is frequently patched by the JIT compiler, often to begin executing a compiled trace or to mark a segment of bytecode for causing too many trace aborts.
230:
programming language. Mike Pall, a primary maintainer of the project had resigned in 2015, resorting only to occasional patching to the future 2.1 version.
1068:
244:
LuaJIT uses rolling releases. Mike Pall, the creator and maintainer recommends using the tip of the v2.1 branch, and does not believe in releases.
1122:
291:
LuaJIT is often the fastest Lua runtime. LuaJIT has also been named the fastest implementation of a dynamic programming language.
223:
334:
1303:
583:"BitOp" for binary operations on unsigned 32-bit integers (these operations are also compiled by the just-in-time compiler)
358:
319:
311:
620:
256:, for their Methodical Accelerator Design 'next-generation' software for describing and simulating particle accelerators
86:
322:
60:
658:
590:
350:
295:
227:
141:
113:
1139:
Rottenkolber, Max. "Later
Binding: Just-in-Time Compilation of a Younger Dynamic Programming Language." ELS. 2020
1054:
759:
which is used at compile time for logic the preprocessor generates. The actual preprocessor is written in Lua.
662:
299:
279:
185:
109:
579:
LuaJIT adds several extensions to its base implementation, Lua 5.1, most of which do not break compatibility.
686:
354:
169:
834:
238:
The LuaJIT project was started in 2005 by developer Mike Pall, released under the MIT open source license.
1123:"Tuning numerical computations for LuaJIT (was Re: [ANN] Sci-1.0-beta1) - luajit - FreeLists"
1099:
Behavioural
Analysis of Tracing JIT Compiler Embedded in the Methodical Accelerator Design Software
697:
180:
706:
669:
152:
756:
690:
173:
133:
1028:
749:
713:
326:
192:
120:
26:
269:
Neovim, a text editor based on vim that allows the use of Lua for plugins and configuration
644:
338:
883:
814:
314:. LuaJIT chooses loops and function calls as trace anchors to begin recording possible
241:
The second major release of the compiler, 2.0.0, featured major performance increases.
38:
1297:
595:
Portable bytecode (regardless of architecture, word size, or endianness, not version)
745:
702:
330:
978:
718:
197:
145:
908:
610:
275:
46:
1069:"Laurence Tratt: The Impact of Meta-Tracing on VM Design and Implementation"
259:
1273:
1174:
315:
774:
629:
835:"[ANN] Looking for new LuaJIT maintainers - luajit - FreeLists"
682:
165:
1249:
1149:
1097:
934:
819:
678:
586:"CoCo", which allows the VM to be fully resumable across all contexts
161:
92:
1224:
302:
data structures. Its use is encouraged for numerical computation.
263:
129:
786:
729:
253:
125:
1002:
674:
157:
137:
960:
1199:
858:
16:
Just-in-time compiler for the Lua programming language
208:
349:
LuaJIT uses two types of internal representation. A
724:
712:
696:
668:
654:
619:
609:
203:
191:
179:
151:
119:
105:
85:
59:
45:
935:"Lua(Jit) for computing accelerator beam physics"
325:. LuaJIT's trace compiler is often capable of
909:"Project status - Issue #665 - LuaJIT/LuaJIT"
8:
604:
19:
815:"LuaJIT/COPYRIGHT at v2.1 · LuaJIT/LuaJIT"
643:
603:
37:
25:
18:
809:
807:
1091:
1089:
31:The logo featured on the LuaJIT website.
767:
748:for C that provides its own flavor of
66:v2.1.ROLLING / August 21, 2023
7:
14:
884:"Re: [ANN] llvm-lua 1.0"
1029:"Helping to make Luajit faster"
755:DynASM includes a bare-bones C
542:---- TRACE 2 start 1/4 Ex.lua:8
1:
512:0009 ------ LOOP ------------
312:tracing just-in-time compiler
224:tracing just-in-time compiler
961:"OpenResty® - Official Site"
563:0006 > int LE 0005 +10000
539:---- TRACE 1 stop -> loop
530:0015 > int LE 0014 +10000
509:0008 > int LE 0007 +10000
482:---- TRACE 1 start Ex.lua:5
323:intermediate representation
1320:
1200:"Coco - True C Coroutines"
1096:d'Andrea, Laurent (2019).
591:foreign function interface
566:0007 num CONV 0005 num.int
296:Foreign Function Interface
278:, who use LuaJIT in their
569:---- TRACE 2 stop -> 1
367:-- Loop with if-statement
333:from object orientation,
81:
55:
36:
24:
1009:. Kong. 25 February 2022
744:DynASM is a lightweight
521:0012 > int NE 0011 +0
500:0005 > int NE 0004 +0
491:0002 > num SLOAD #1 T
479:
364:
359:static single-assignment
320:static single-assignment
280:web application firewall
524:0013 + num ADD 0010 +33
503:0006 + num ADD 0003 +33
345:Internal representation
272:Kong, a web API gateway
68:; 12 months ago
536:0017 num PHI 0006 0013
533:0016 int PHI 0007 0014
527:0014 + int ADD 0007 +1
506:0007 + int ADD 0001 +1
1304:Compiler construction
557:0004 num ADD 0003 +33
554:0003 num ADD 0001 +22
518:0011 int MOD 0007 +10
515:0010 num ADD 0006 +11
497:0004 int MOD 0001 +10
494:0003 num ADD 0002 +11
186:Just-in-time compiler
1055:"LuaJIT Performance"
939:CERN Document Server
859:"The LuaJIT Project"
560:0005 int ADD 0002 +1
551:0002 int SLOAD #2 PI
548:0001 num SLOAD #1 PI
488:0001 int SLOAD #2 CI
351:stack-based bytecode
1033:blog.cloudflare.com
979:"Lua - Neovim docs"
606:
21:
339:type modifications
294:LuaJIT includes a
266:with Lua scripting
47:Original author(s)
1274:"DynASM Features"
1175:"BitOp Semantics"
1127:www.freelists.org
1035:. 19 October 2017
933:Deniau, Laurent.
839:www.freelists.org
823:. 7 January 2022.
742:
741:
217:
216:
1311:
1289:
1288:
1286:
1284:
1270:
1264:
1263:
1261:
1260:
1246:
1240:
1239:
1237:
1235:
1221:
1215:
1214:
1212:
1210:
1196:
1190:
1189:
1187:
1185:
1171:
1165:
1164:
1162:
1160:
1146:
1140:
1137:
1131:
1130:
1118:
1112:
1111:
1109:
1107:
1093:
1084:
1083:
1081:
1079:
1065:
1059:
1058:
1051:
1045:
1044:
1042:
1040:
1025:
1019:
1018:
1016:
1014:
999:
993:
992:
990:
989:
975:
969:
968:
957:
951:
950:
948:
946:
930:
924:
923:
921:
919:
905:
899:
898:
896:
894:
879:
873:
872:
870:
869:
855:
849:
848:
846:
845:
831:
825:
824:
811:
802:
801:
799:
797:
783:
777:
772:
750:inline assembler
738:
735:
733:
731:
647:
642:
639:
637:
635:
633:
631:
607:
570:
567:
564:
561:
558:
555:
552:
549:
546:
543:
540:
537:
534:
531:
528:
525:
522:
519:
516:
513:
510:
507:
504:
501:
498:
495:
492:
489:
486:
483:
476:
473:
470:
467:
464:
461:
458:
455:
452:
449:
446:
443:
440:
437:
434:
431:
428:
425:
422:
419:
416:
413:
410:
407:
404:
401:
398:
395:
392:
389:
386:
383:
380:
377:
374:
371:
368:
353:is used for the
298:compatible with
213:
210:
121:Operating system
101:
98:
96:
94:
76:
74:
69:
41:
29:
22:
1319:
1318:
1314:
1313:
1312:
1310:
1309:
1308:
1294:
1293:
1292:
1282:
1280:
1272:
1271:
1267:
1258:
1256:
1248:
1247:
1243:
1233:
1231:
1223:
1222:
1218:
1208:
1206:
1198:
1197:
1193:
1183:
1181:
1173:
1172:
1168:
1158:
1156:
1148:
1147:
1143:
1138:
1134:
1120:
1119:
1115:
1105:
1103:
1095:
1094:
1087:
1077:
1075:
1067:
1066:
1062:
1053:
1052:
1048:
1038:
1036:
1027:
1026:
1022:
1012:
1010:
1001:
1000:
996:
987:
985:
977:
976:
972:
959:
958:
954:
944:
942:
932:
931:
927:
917:
915:
907:
906:
902:
892:
890:
881:
880:
876:
867:
865:
857:
856:
852:
843:
841:
833:
832:
828:
813:
812:
805:
795:
793:
785:
784:
780:
773:
769:
765:
728:
650:
628:
602:
577:
572:
571:
568:
565:
562:
559:
556:
553:
550:
547:
545:---- TRACE 2 IR
544:
541:
538:
535:
532:
529:
526:
523:
520:
517:
514:
511:
508:
505:
502:
499:
496:
493:
490:
487:
485:---- TRACE 1 IR
484:
481:
478:
477:
474:
471:
468:
465:
462:
459:
456:
453:
450:
447:
444:
441:
439:-- if-statement
438:
435:
432:
429:
426:
423:
420:
417:
414:
411:
408:
405:
402:
399:
396:
393:
390:
387:
384:
381:
378:
375:
372:
369:
366:
347:
308:
289:
250:
236:
207:
91:
77:
72:
70:
67:
32:
17:
12:
11:
5:
1317:
1315:
1307:
1306:
1296:
1295:
1291:
1290:
1265:
1241:
1216:
1191:
1166:
1141:
1132:
1113:
1102:(Thesis). CERN
1085:
1060:
1046:
1020:
994:
970:
952:
925:
900:
874:
850:
826:
803:
778:
766:
764:
761:
740:
739:
726:
722:
721:
716:
710:
709:
700:
694:
693:
672:
666:
665:
656:
652:
651:
649:
648:
625:
623:
617:
616:
613:
601:
598:
597:
596:
593:
587:
584:
576:
573:
480:
365:
346:
343:
307:
304:
288:
285:
284:
283:
273:
270:
267:
257:
249:
246:
235:
232:
215:
214:
205:
201:
200:
195:
189:
188:
183:
177:
176:
155:
149:
148:
123:
117:
116:
107:
103:
102:
89:
83:
82:
79:
78:
65:
63:
61:Stable release
57:
56:
53:
52:
49:
43:
42:
34:
33:
30:
15:
13:
10:
9:
6:
4:
3:
2:
1316:
1305:
1302:
1301:
1299:
1279:
1275:
1269:
1266:
1255:
1251:
1245:
1242:
1230:
1226:
1225:"FFI Library"
1220:
1217:
1205:
1201:
1195:
1192:
1180:
1176:
1170:
1167:
1155:
1151:
1145:
1142:
1136:
1133:
1128:
1124:
1117:
1114:
1101:
1100:
1092:
1090:
1086:
1074:
1070:
1064:
1061:
1056:
1050:
1047:
1034:
1030:
1024:
1021:
1008:
1004:
998:
995:
984:
980:
974:
971:
966:
965:openresty.org
962:
956:
953:
940:
936:
929:
926:
914:
910:
904:
901:
889:
888:lua-users.org
885:
878:
875:
864:
860:
854:
851:
840:
836:
830:
827:
822:
821:
816:
810:
808:
804:
792:
788:
782:
779:
776:
771:
768:
762:
760:
758:
753:
751:
747:
737:
727:
723:
720:
717:
715:
711:
708:
704:
701:
699:
695:
692:
688:
684:
680:
676:
673:
671:
667:
664:
660:
657:
653:
646:
641:
627:
626:
624:
622:
618:
614:
612:
608:
599:
594:
592:
588:
585:
582:
581:
580:
574:
363:
360:
356:
352:
344:
342:
340:
336:
332:
329:and removing
328:
324:
321:
317:
313:
305:
303:
301:
297:
292:
286:
281:
277:
274:
271:
268:
265:
261:
258:
255:
252:
251:
248:Notable users
247:
245:
242:
239:
233:
231:
229:
225:
221:
212:
206:
202:
199:
196:
194:
190:
187:
184:
182:
178:
175:
171:
167:
163:
159:
156:
154:
150:
147:
143:
139:
135:
131:
127:
124:
122:
118:
115:
111:
108:
104:
100:
90:
88:
84:
80:
64:
62:
58:
54:
50:
48:
44:
40:
35:
28:
23:
1281:. Retrieved
1277:
1268:
1257:. Retrieved
1253:
1250:"Extensions"
1244:
1232:. Retrieved
1228:
1219:
1207:. Retrieved
1203:
1194:
1182:. Retrieved
1178:
1169:
1157:. Retrieved
1153:
1150:"Extensions"
1144:
1135:
1126:
1121:Pall, Mike.
1116:
1104:. Retrieved
1098:
1076:. Retrieved
1072:
1063:
1049:
1037:. Retrieved
1032:
1023:
1011:. Retrieved
1006:
997:
986:. Retrieved
982:
973:
964:
955:
943:. Retrieved
938:
928:
916:. Retrieved
912:
903:
891:. Retrieved
887:
882:Pall, Mike.
877:
866:. Retrieved
862:
853:
842:. Retrieved
838:
829:
818:
794:. Retrieved
790:
781:
770:
754:
746:preprocessor
743:
703:Preprocessor
611:Developer(s)
578:
348:
310:LuaJIT is a
309:
293:
290:
262:, a fork of
243:
240:
237:
219:
218:
1283:25 February
1234:25 February
1209:25 February
1184:25 February
1159:25 February
1039:25 February
1013:25 February
1003:"Kong/kong"
945:25 February
893:25 February
796:25 February
775:LuaJIT tags
757:header file
719:MIT License
355:interpreter
287:Performance
198:MIT License
146:PlayStation
1259:2022-08-25
1254:luajit.org
988:2024-05-07
918:3 February
868:2023-06-17
863:luajit.org
844:2023-03-29
763:References
655:Written in
621:Repository
575:Extensions
331:dispatches
276:Cloudflare
106:Written in
87:Repository
73:2023-08-21
1073:tratt.net
983:neovim.io
636:/luajit-2
615:Mike Pall
335:operators
316:hot paths
260:OpenResty
51:Mike Pall
1298:Category
787:"LuaJIT"
670:Platform
357:, and a
327:inlining
226:for the
153:Platform
1106:31 July
1078:2 March
734:/dynasm
725:Website
714:License
683:PowerPC
306:Tracing
282:service
234:History
204:Website
193:License
166:PowerPC
142:Android
134:Windows
128:-like,
99:/LuaJIT
97:/LuaJIT
71: (
1278:DynASM
1229:LuaJIT
1204:LuaJIT
1179:LuaJIT
1154:LuaJIT
1007:GitHub
941:. CERN
913:GitHub
820:GitHub
791:LuaJIT
730:luajit
707:Linker
679:X86-64
630:luajit
605:DynASM
600:DynASM
337:, and
220:LuaJIT
209:luajit
162:X86-64
93:github
20:LuaJIT
736:.html
370:local
264:nginx
222:is a
130:MacOS
1285:2022
1236:2022
1211:2022
1186:2022
1161:2022
1108:2022
1080:2022
1041:2022
1015:2022
947:2022
920:2023
895:2022
798:2022
732:.org
698:Type
691:MIPS
640:.git
634:/git
632:.org
436:then
254:CERN
211:.org
181:Type
174:MIPS
126:Unix
95:.com
687:ARM
675:x86
659:Lua
475:end
457:end
397:1e4
382:for
228:Lua
170:ARM
158:x86
138:iOS
114:Lua
1300::
1276:.
1252:.
1227:.
1202:.
1177:.
1152:.
1125:.
1088:^
1071:.
1031:.
1005:.
981:.
963:.
937:.
911:.
886:.
861:.
837:.
817:.
806:^
789:.
705:,
689:,
685:,
681:,
677:,
661:,
638:.0
589:A
472:33
454:22
430:==
427:10
418:if
415:11
400:do
341:.
172:,
168:,
164:,
160:,
144:,
140:,
136:,
132:,
112:,
1287:.
1262:.
1238:.
1213:.
1188:.
1163:.
1129:.
1110:.
1082:.
1057:.
1043:.
1017:.
991:.
967:.
949:.
922:.
897:.
871:.
847:.
800:.
663:C
469:+
466:x
463:=
460:x
451:+
448:x
445:=
442:x
433:0
424:%
421:i
412:+
409:x
406:=
403:x
394:,
391:1
388:=
385:i
379:0
376:=
373:x
300:C
110:C
75:)
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.