Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Vpn #86

Closed
wants to merge 15 commits into from
Closed

Vpn #86

wants to merge 15 commits into from

Conversation

alexandergall
Copy link
Contributor

apps/vpn/vpws.lua provides a L2 point-to-point VPN by encapsulating Ethernet frames in GRE over IPv6. To facilitate integration with a IPv6 transport network, apps/ipv6/ns_responer.lua implements an app that responds to IPv6 neighbor solicitations on the VPN "uplink".

Most of the code, however, deals with parsing and manipulating protocol headers. An OO approach appeared to be well suited for this, since most protocl headers can share a lot of code for basic functionality. The overhead in method calls and object creation may well turn out to be a no-go, but I'd like to see how far I can get with this. To implement inheritance, I have added a small OO framework in class.lua that others might want to use as well.

There aren't any selftests for the VPN code yet, because it's kind of hard to set up a meaningful test environment.

alexandergall and others added 6 commits December 28, 2013 13:25
- Added a framwork of classes for processing packets ("datagrams") in lib/protocol
- New app that responds to IPv6 neighbor solicitations apps/ipv6/ns_responder.lua
- New app that implements a point-to-point Ethernet tunnel (Virtual Private Wire Service)
  over IPv6/GRE apps/vpn/vpws.lua
- Added class methods pton() ntop() in ethernet and ipv6 class to convert
  addresses from/to printable representations
- Added checksum/key for GRE header
- Various improvements, things are starting to take shape
@agladysh
Copy link

agladysh commented Feb 4, 2014

Doh. Yet another OOP implementation.

Are you really sure this is needed here?

No offense, but to me it is a design smell...

@lukego
Copy link
Member

lukego commented Feb 4, 2014

The coding standard encourages experimentation and creative freedom when creating new apps, so adding a new OO framework is totally in the spirit of this.

This is the best pull request yet: adding useful functionality, beautifully documented, carefully structured into logical commits. I look forward to reading in more detail and helping to get it running fast :-)

@agladysh
Copy link

agladysh commented Feb 4, 2014

Luke, usually, I'm all in favor of experimentation and creative freedom.

However, adding an OO-framework on a global level may have longstanding consequences.

Since the framework is already there, it is too easy to just keep using it, without regard to applicability of OOP for a given task. We all have seen where this road leads to.

Furthermore, since the framework is already there at a global level (not at an application level), this framework will be implicitly made the "official" one, not an experimental one as it probably should be.

It is your call, of course, but — are you sure that you want to go there?

@alexandergall
Copy link
Contributor Author

Can you please point me to the existing OO framework? I didn't mean to add "yet another one" for the heck of it. Also, please note that this is my first work in Lua, so I appreciate all feedback on style and technique, but please be gentle :)

@lukego
Copy link
Member

lukego commented Feb 4, 2014

I'd like to start by understanding the problem that Alex is solving, how he has structured his solution, and how we can help make his project a success. Then we can collectively also work on improving the "eventual consistency" of the code base.

@agladysh
Copy link

agladysh commented Feb 4, 2014

@alexandergall There is a ton of available OOP-frameworks in Lua — everyone who comes to Lua from OOP background makes it his duty to invent one.

My position — in general, not regarding your code — is that if one wants to do so much OOP in Lua that it needs a framework (even if it is a single class function), then that person must be doing something wrong in a way that is not natural to the language.

For example, I'm troubled by the fact that your framework has isa method. Why would this be ever needed in a language with duck-typing?

(Sorry if I sound acerbic, nothing personal.)

@agladysh
Copy link

agladysh commented Feb 4, 2014

@lukego Sounds reasonable. This was a knee-jerk reaction on my part to the big red flag of seeing class.lua in a pull request :-) Probably not a best thing to cultivate contributor base :-)

@agladysh
Copy link

agladysh commented Feb 4, 2014

@alexandergall Just in case, I have not made a single commit in this project myself, so listen to Luke, he is the maintainer. I'm just ranting in background :-)

@lukego
Copy link
Member

lukego commented Feb 4, 2014

It's still early in the project's life. Let's make a mess that's worth cleaning up :)

@agladysh
Copy link

agladysh commented Feb 4, 2014

@lukego Keep in mind, however, that a mess that is created by badly chosen OOP framework often can be cleaned up only by a rewrite from scratch. This is why I'm reacting this way :)

@lukego
Copy link
Member

lukego commented Feb 4, 2014

@agladysh I hope we will rewrite every line at least once in the next couple of years. "The best writing is rewriting" :-)

@alexandergall
Copy link
Contributor Author

The fact that there is a ton of OOP-frameworks appears to me to be a flaw of Lua, really. Frankly, I don't care what we use, I just need simple inheritance. It's already there? Great, tell me how it works and I'll use it.

@@ -0,0 +1,94 @@
-- This app acts as a responder for neighbor solicitaions for a
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I love this design idea: to handle neighbor solicitation response as a small discrete app that "does one thing well" instead of adding it as a feature to the IPv6 next-hop-routing app.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In this case, the traffic going north->south is passed through untouched. Would it make sense to bypass the app in that direction to avoid the overhead?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder about that too. I suppose it will be worth doing that kind of stuff if the performance difference is significant in practice, once we are done with optimization. I hope we will have the basic app transmit/receive functionality so fast that we don't need to care.

@agladysh
Copy link

agladysh commented Feb 4, 2014

@alexandergall Regarding that "flaw of Lua" remark — if you're interested in language design, I recommend you to read up a bit on Lua design and philosophy, then we will be able to discuss it further :-)

As for the way to do a "simple inheritance" in this project — this is a question for Luke as a maintainer, since it is largely a matter of taste in Lua.

else
-- Check for encapsulated frame coming in on uplink
if datagram:parse(
{ { ethernet },
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suspect there is an easy-to-optimize performance issue here. The syntax {...} is probably allocating a garbage-collectable table and the syntax function()...end is probably allocating a garbage-collectable closure and that's possibly expensive to do inside the main traffic loop.

If the profiler reveals that vows:push() is expensive (or that garbage collection is) then you might want to try creating the {...} table and closure in the initialization function and reuse it in push().

I could also be totally wrong on this guess, not having done any profiling :-). Do you have a reproducible benchmarking setup?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd say that this should be benchmarked before refactoring. If this is compiled away, it should not generate much overhead. (But LuaJIT can be finicky in that matter...)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For this case, I think a simple benchmark could be created with Source->vpws->Sink because the actual contents of the packet is irrelevant for encapsulation.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

True. And I suppose the decap could be tested with Source->vpws{encap}->vpws{decap}->Sink. Or perhaps even reducing the encap work with something like Source->vpws{encap}->Loop->vpws{decap}->Sink to encapsulate one batch of packets and then replay them without recreating them.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can somebody please enlighten me how to make the profiler produce any output at all? Using -jp stalls the process and nothing works. strace shows

clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f2b01ef29f0) = ? ERESTARTNOINTR (To be restarted)
--- SIGPROF (Profiling timer expired) @ 0 (0)

When I use a bigger sampling interval, e.g. i100, the app runs but I get no output from the profiler.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The issue with the hung process is not there on chur (which I'd also like to understand), but the profiler still doesn't produce any output:

gall@chur:~/projects/snabbswitch/src$ sudo ./snabbswitch -jp test.vpws-perf
link report
source.tx->vpn.customer 100,000 packet(s) transmitted
vpn.uplink->sink.rx 100,000 packet(s) transmitted

Must be something silly...

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you calling os.exit() or otherwise terminating the process before it manages to terminate?
(How about if you use -t before test.vpws-perf? the profiler stuff is in main.lua and related to the command line.)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, using require("jit.p").start() in my code works. Just not on the command line. Oh, well.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could be that you're using an older version of master as the basis and it has bugs?
Soon time to start thinking about creating integration branches as stable points to develop against..

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, I have merged with master not long ago (unless my git foo failed me ;) But I'm happy for now with this workaround.

@lukego
Copy link
Member

lukego commented Feb 4, 2014

(wow my Macbook is amazingly determined to auto-correct the words encap->encamp and decap->recap! probably time to turn that feature off...)

@alexandergall
Copy link
Contributor Author

@agladysh: I have no intention to enter that particular rat-hole :) But I'm all ears to learn how to do this with the existing framework.

@agladysh
Copy link

agladysh commented Feb 4, 2014

@alexandergall Simplest possible inheritance in Lua is implemented by setting __index metamethod to the parent (or rather prototype) object. You can see that, among other things, being done in your class.lua. No frameworks needed to do that, just a setmetatable call.

Everything above that is optional and a matter of taste.

I suspect that Luke at this point is fine with your implementation — he is right about this being early days. But, just for fun, I will look closely at your code tonight and maybe come up with something more to my own liking (FWIW).

if ffi.abi("le") then
na_t = ffi.typeof[[
struct {
uint32_t reserved:5,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like bitfields in C structs. I think they are currently an "NYI" in LuaJIT though: that the JIT doesn't understand them and as a consequence code that uses them will be interpreted instead of JIT'd. (If that's true you would see an NYI warning in the JIT trace from -jdump.)

We should see about getting support for bitfields in LuaJIT, either by asking Mike Pall or hacking it ourselves (it will be awesome if we can develop LuaJIT-hacking expertise of our own).

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be awesome indeed. But we need to coordinate it with Mike, so it would not become a forking experience instead of hacking one — which would be a bit less awesome, I believe :-)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indeed.
I asked Mike about this when he gave his talk in Zurich: How can Snabb Switch contribute to LuaJIT?
He said he'd appreciate more people understanding the LuaJIT internals and being able to contribute code. He's already pretty satisfied in terms of creating consulting work and getting LuaJIT into widespread use.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What, Mike gave a talk somewhere? Why did I miss that? :-( Is there a link or something?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, good you mention this. I spent some time pondering how to do this right. Bit fields are compiler-dependent by nature, which makes it hard to write portable code. OTOH, we're bound to a specific compiler, so this is probably not much of an issue. Endianness with bit fields is a PITA, though and I believe that there are some limitations on the way those fields can (or rather can't) cross certain byte-boundaries.

So, I decided to manage bit fields with the bit library (which is supported by JIT, I believe), see core.lib.bitfield(). I obviously forgot the stuff in na.lua :) I'd be interested in what you think about this approach.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep! Mike stepped briefly out of the shadows last October and gave a surprise three-hour talk about LuaJIT internals at the Zurich IT Geeks meetup group: http://www.meetup.com/zhgeeks/events/141272252/
He mostly walked through code examples and showed how they are compiled and why. There is alas no video available and only scant notes published on the meetup page.
It was a great evening, but don't worry, nobody became an instant expert on LuaJIT internals from being there :-)

  - Avoid certain ffi.typeof() operations for pointer types in the main loop
  - Avoid require() in header:upper_layer() method
  - Major change of semantics of the datagram:push() method avoids expensive
    cloning of protocol objects without loss of functionality
VPWS: fix premature exit of push() method after packet discard
@lukego
Copy link
Member

lukego commented Apr 2, 2014

Hi again!

I'd like to get this code merged in so that it can be maintained together with the rest of the repository (it's an undue extra maintenance burden on you when it's out-of-tree and the other code is changing).

Could you possibly pull the class/datagram/etc code into the app/ directory? I'd like to make the core/ and lib/ trees small and conservative for now and keep higher-level frameworks inside the apps. This will mean more code in app/ directories in the short term but it means app authors can experiment with any programming style they want without standing on each others' toes.

@lukego
Copy link
Member

lukego commented Apr 4, 2014

On reflection I agree that the structure you have now with code in lib/ is better than having everything in app/. I would like to merge this code soon. Does this pull request contain the latest?

@alexandergall
Copy link
Contributor Author

OK :) the latest commit is alexandergall@0e3116f
It contains some performance improvements and bug fixes. class.lua should probably be moved to some other place, I guess.

@lukego
Copy link
Member

lukego commented Apr 7, 2014

Could you perhaps move class.lua somewhere suitable (in lib/ ?) and send a new pull request?

Conflicts:
	src/apps/vhost/vhost_apps.lua
	--> resolved by accepting master version
	src/core/clib.h
	--> resolved by accepting both changes
@alexandergall
Copy link
Contributor Author

Yes, but this will take some time. I just merged with your master and realized that there are substantial changes in the app API and my code no longer runs. This is not the place to discuss this, but I'm hitting a wall right from the start, because config.app() requires the arg to the class' new() method to be a string, but some of my classes expect multiple arguments :(

@lukego
Copy link
Member

lukego commented Apr 7, 2014

The easy fix is to pass a string and then parse it as Lua. That's what the ipv6 app does.

The benefit of moving to strings is that it will be possible to load new app networks into a running system with minimal disruption. (The app object won't be recreated if its configuration string is the same.)

@alexandergall
Copy link
Contributor Author

OK, got it.

core.buffer.size since the driver does not yet support multi-buffer
packets (core.packet.coalesce() also has this limitation).
@alexandergall
Copy link
Contributor Author

I'm just about ready to send a new pull request. Regarding class.lua, I propose to put it in lib/lua/class.lua and put the corresponding require in core/main.lua. I thought that maybe strict.lua could be put in lib/lua as well and maybe other similart stuff in the future. What do you think?

@lukego
Copy link
Member

lukego commented Apr 10, 2014

Yes, that sounds reasonable.

(I'm also not really sure if the current core/lib/app/design directory layout really makes sense, would be interesting to think about better alternatives.)

@alexandergall
Copy link
Contributor Author

On Thu, Apr 10, 2014 at 9:19 PM, Javier notifications@github.com wrote:

for lib/lua you mean the system Lua libraries? or a lua/ subdir inside
snabbswitch's src/lib/ dir? If the former, I'd advise against it.
Snabbswitch should be self-contained... we're including LuaJIT itself for a
readon. If the latter, then I don't get why a lua/ subdir. wouldn't it be
just src/lib/class.lua ? after all, almost everything is Lua here, isn't
it?

I mean a directory in Snabb's src/lib/. The idea was to put stuff there
that has something to do with the way we use Lua for this project rather
than something related to a specific feature like what's in src/lib now. I
proposed to move strict.lua to that place as well.

Alex

end

function TapVhost:pull ()
assert(self.dev)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This assertion is failing in selftest for me. I think the reason is that open() doesn't get called. Adding the open() call to new() looks like it would break RawVhost elsewhere.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That was an ill-fated attempt to subclass TapVhost in a simple-minded manner. I don't want to rewrite it and it's probably best to remove the entire RawVhost thing. I never used it anyway (RawSocket, OTOH, is useful for debugging, because you can attach wireshark to such an interface).

@lukego
Copy link
Member

lukego commented Apr 12, 2014

I'm ready to merge if you can:

  • Tidy up the commit history (git rebase -i).
  • Get "make test" passing on chur.
  • Leave out the intel10g MTU change from this pull request (save it for after we get in Javier's new code).

@lukego lukego added this to the Banana milestone Apr 12, 2014
@lukego
Copy link
Member

lukego commented Apr 13, 2014

Howdy!

To clarify what I meant when requesting to git rebase -i: I'd like the commit list to please reflect the final result and not the intermediate steps. So commits that all update the same bit of code - e.g. first draft, debug, optimize, etc - can be squashed into a single commit for merging.

optional bonus points to split logically separate features into separate commits: socket I/O, vhost changes, etc but if that's too much work then just squash everything into one commit (minus the intel driver changes please because that's going to conflict with Javier's big driver changes that are also coming in now).

@alexandergall
Copy link
Contributor Author

Ok. Give me a minute to get acquainted with git rebase :)

@lukego
Copy link
Member

lukego commented Apr 14, 2014

Here's a possibly handy link: https://help.github.com/articles/interactive-rebase

@alexandergall
Copy link
Contributor Author

Rebasing into separate commits would be way too complicated due to my rather badly organized commits and the fact that I merged twice with master. Sqashing everything into a single commit is ugly, I agree. I have decided to re-play my stuff onto a fresh branch of the current master in a better organize manner and post a new PR for that and close this PR.

@lukego
Copy link
Member

lukego commented Apr 15, 2014

Thanks for making the effort!

By the way: This is the document that made Git 'click' for me, after years of confusion and annoyance: http://ftp.newartisans.com/pub/git.from.bottom.up.pdf

@lukego lukego closed this Apr 23, 2014
dpino added a commit to dpino/snabb that referenced this pull request Oct 26, 2015
Ignore generated documentation files
lukego added a commit to lukego/snabb that referenced this pull request Dec 12, 2017
eugeneia added a commit to eugeneia/snabb that referenced this pull request Mar 14, 2019
eugeneia added a commit to eugeneia/snabb that referenced this pull request Mar 27, 2019
eugeneia added a commit to eugeneia/snabb that referenced this pull request Sep 6, 2023
54cc2a1b4 Merge PR snabbco#260 (clear hotcounts every second) into next
4cbeb1e39 lj_trace.c: amend prev. commit, do not clear SNAPCOUNT_DONE
8f36d5183 lj_trace.c: amend prev. commit, also clear trace exit hotcounts
77df770fb lj_trace.c: clear all hotcounts every second
73323b7c6 Merge pull request snabbco#246 from lukego/fix-unsinking
59fc1b06d lj_snap.c: Fix unsinking of 64-bit pointers
65ef4f455 testsuite: Add (segfaulting) test for allocation unsinking
32b08479a Merge pull request snabbco#243 from ZirconiumX/force_gc64
7954fd345 Remove LJ_LE #define
ae45cbe4e Remove LJ_BE #define
4f3dc17e9 Re-bootstrap the VM
190356e92 Prune dead code
dcd87f025 Remove LJ_HASFFI #define
2a343ef9f Remove LJ_32 #define
41b290d44 Remove LJ_64 #define
de0c96014 Remove LJ_GC64 #define
ff23fc588 Merge pull request snabbco#241 from ZirconiumX/use_sysmalloc
b060b48c6 Remove built-in dlmalloc
7a6b899f4 Merge pull request snabbco#226 from lukego/compare_hash
c5a7d2318 Merge LuaJIT/LuaJIT#243 branch 'funny-falcon/compare_hash'
bfc3b47d4 Merge pull request snabbco#221 from lukego/basic-install-test
8a80855c4 etc/raptorjit.pc: Replace s/LuaJIT/RaptorJIT/
e96e0ecdb Merge snabbco#220 branch 'lazara5/pkgconfig' into basic-install-test
72decefa5 raptorjit.nix: Check for installation of lib/pkgconfig/raptorjit.pc
33d88ea39 raptorjit.nix: Check installation of bin/raptorjit and lib/raptorjit-5.1.so
9b13bd3c3 Added back pkg-config file
f2e3705e6 Merge pull request snabbco#218 from lukego/test-libraptorjit
78d168f95 Merge pull request snabbco#217 from lukego/dwarf-not-so
5c72a3cf9 Merge snabbco#217 branch 'dwarf-not-so' into test-libraptorjit
fcdc3c61f fixup! test-libraptorjit.nix: Added test for dynamic linking libraptorjit
2a5d6fb3f .travis.yml: Add test-libraptorjit
5be341e2c test-libraptorjit.nix: Added test for dynamic linking libraptorjit
b9d801b15 src/Makefile: Fix unwanted dynamic linkage of dwarf debug info
16930c36c Merge pull request snabbco#212 from lukego/test-capi
ae0525c0d Merge pull request snabbco#209 from lukego/c-api-linkage
5af79e149 Merge branch 'c-api-linkage' into test-capi
4e9162ff3 .travis.yml: Add test-capi
bd959e359 test-capi.nix: Add basic of C-API linkage
63d415811 src/Makefile: Add -Wl,-E to make Lua API symbols visible to linked objects
572090d8d Merge pull request snabbco#200 from lukego/commercial-support
7f812f9e2 Added PROFESSIONAL-SUPPORT.md list of service providers
61c3a36b1 Merge snabbco#195 branch 'bonidjukic/update-docs'
2d386f69c Merge pull request snabbco#197 from 0xflotus/patch-1
2528860b3 fixed Quantitative
723210655 Fix README typos
31d41be Merge pull request snabbco#193 from lukego/prepare-release-1.0
56a88b2 Prepare for RaptorJIT 1.0 with installation fixes
d44450e Merge pull request snabbco#192 from lukego/log-ctype-assert
fc0c107 Merge pull request snabbco#191 from lukego/memory-leak-protection
55e7656 lj_ctype.c: Detect bad ctypeid without failing lua_assert
3b80633 lj_state.c: Restore assertion that all memory is deallocated
a667ead Fix deallocation of T->szirmcode
2a7990a Merge pull request snabbco#189 from lukego/nix-build-options
d3c149d default.nix: Test with -DLUA_USE_ASSERT and -Werror
52e2977 Merge pull request snabbco#186 from lukego/fix-jit-traces-alloc
d09927b lj_trace.c: Fix and simplify allocation of J->trace
5d235e6 Merge pull request snabbco#184 from lukego/ctype-no-loop
3f9db9e lj_ctype.c: Detect loops in ctype_repr()
9fac632 Merge pull request snabbco#183 from lukego/szirmcode-alloc-free
9959cb1 lj_asm.c: Added comment about szirmcode moving to final GCtrace
66f9234 lj_trace_alloc: Copy T->szirmcode to new trace
4782265 Fix allocation/deallocation of T->szirmcode
9056918 Merge pull request snabbco#182 from lukego/readme-vmprofile-filename
fcf138f README.md: Correct profile names to *.vmprofile (expected by studio)
5171334 Merge pull request snabbco#179 from lukego/readme-studio
4e1405d README.md: Add quick Studio getting started intro
f29bc2a Merge pull request snabbco#178 from lukego/readme-update
4891901 README.md: revised ahead of first release
5d7d873 Merge pull request snabbco#50 from lukego/Werror
0494515 Merge pull request snabbco#177 from lukego/rebrand-printouts
d4a392a Merge branch 'master' into Werror
420fa75 Minimal rebranding from LuaJIT -> RaptorJIT
48b2be9 Merge pull request snabbco#63 from lukego/auditlog
7e74425 Merge branch 'raptorjit/master' into auditlog
53eb6ae Merge branch 'master' into auditlog
a4f36d3 Merge pull request snabbco#176 from lukego/switch-sigprof-to-sigvtalrm
d38be0e Merge pull request snabbco#175 from lukego/vmprofile-exit-exclude-function-trace
ca0abe3 reusevm: Update generated code
6b72001 Use virtual instead of profile time for vmprofile
2c5faa8 Exclude function-rooted traces from global_State->lasttrace
cd172fc lj_parse.c: Set declname for file-level code to <toplevel>
473cb19 lj_ctype.c: Avoid crash when printing unprintable ctype IDs
90a15f7 lj_ctype.c, lj_trace.c: Poll for ctypes to log on trace stop/abort
9abd48a Merge pull request snabbco#168 from lukego/declname
0a588b4 Merge branch 'declname' into auditlog
96e00a6 lj_bcwrite.c: Remove unused variable
c552236 Restore older debug info fields to their original positions
d60c595 lj_prase.c: Remove old debug noise
c8b1388 Merge branch 'declname' into auditlog
8f55c03 src/reusevm: Update generated code
01f8b4c lj_bcread.c: Remove suspicious loop
73b96a4 src/reusevm: Update generated code
74b52e6 lj_bcread.c: Remove suspicious loop
4166e7a lj_bcdump.h: Bump bytecode version number (2 -> 3)
6395811 Merge branch 'declname' into auditlog
8d9d959 Extend GCproto debug with declared function name (declname)
f58daf9 Merge pull request snabbco#163 from lukego/readme-linux
9a798d7 luajit.c: Fix argument parsing bug that made "-a" fall into "-p"
92955dc src/Makefile: Add dependency from DWARF info to generated headers
a5222e7 lj_state.c: Partial fix of assertion on shutdown
1646db3 lj_audit.log.c: Fix iteration through trace constants
fe5f37d Merge branch 'master' into auditlog
e51eaa1 lj_debuginfo.h: Add missing file declaring dwarf data
229fc15 lj_auditlog.c: Log raptorjit VM DWARF debug information to audit.log
02062e9 src/Makefile: Embed DWARF debug info as binary blob
9b5ab0a lj_dwarf.c: Add lj_ircall.h and lj_ff.h for more debug information
f62c246 fixup! lj_asm.c: Fix szirmcode values
8c8731e lj_asm.c: Fix szirmcode values
d64a769 fixup! lj_auditlog.c: Log GCtrace->irmcodesz (IR-mcode mapping)
44fbf8e lj_auditlog.c: Log GCtrace->irmcodesz (IR-mcode mapping)
1d1dc9f README.md: State more clearly that Linux is required
9fb87d1 Merge pull request snabbco#162 from lukego/nix-shell
db4b5e7 Merge pull request snabbco#160 from Igalia/remove-profiler
b93738f shell.nix: Make 'nix-shell' command work as documented
486f720 lj_auditlog.c: Log GCfunc objects referenced by IR constants
1c81d51 fixup! lj_auditlog.c, lj_ctype.c: Log named ctypes to the audit log
d0191fe lj_auditlog.c, lj_ctype.c: Log named ctypes to the audit log
10764c4 lj_auditlog.c: Log strings referenced as IR constants
b0cbca7 lj_auditlog.c: Add "nanotime" timestamp to events
d0dcc75 lj_audit.log.c: Add file size limit (default 100MB)
0158240 luajit.c: Make -a and -p argument handling more consistent
8119e5d Remove references to the profiler, -jv, -jdump, and the like
cad220d lj_trace.c, lj_auditlog.c: Log auditlog event "trace_flushall"
c6347dc lj_trace.c: Clear profiler lasttrace state on flushall()
7b57a23 lj_trace.c: Allow reuse of trace numbers after jit.flush()
9be90a3 lj_jit.h: Increase default maxtrace from 1000 to 10000
389cc39 Merge remote-tracking branch 'raptorjit/master' into auditlog
8b04cd7 Merge pull request snabbco#154 from darius/master
559113a correct spelling
7484d99 Merge pull request snabbco#153 from lukego/pull-luajit-jan2018
42bb70b lj_ir.h: Fix typo made when resolving merge conflict
a8f76e5 Merge commit '4660dbf' into pull-luajit-jan2018
1a0be2e Merge commit '58d0dde' into pull-luajit-jan2018
2ff6099 Merge commit 'ea7071d' into pull-luajit-jan2018
e3e3c80 Merge commit 'd417ded' into pull-luajit-jan2018
836ba21 Merge commit '734a3fa' into pull-luajit-jan2018
653d48a Merge commit '33082a6' into pull-luajit-jan2018
7f812ff Merge commit '99cdfbf' into pull-luajit-jan2018
1753d8b Merge commit '06cd9fc' into pull-luajit-jan2018
5a6457d Merge commit '4b17a6a' into pull-luajit-jan2018
e525ef9 Merge commit '850f8c5' into pull-luajit-jan2018
0dbdc24 Merge commit 'b4ed321' into pull-luajit-jan2018
98027c8 Merge commit '6a2d8b0' into pull-luajit-jan2018
45b5028 Merge commit 'bf12f1d' into pull-luajit-jan2018
f4fbf81 Merge commit '05fbdf5' into pull-luajit-jan2018
8afd558 Merge commit '71b7bc8' into pull-luajit-jan2018
7f41f14 Merge commit '6b08248' into pull-luajit-jan2018
844ab86 Merge commit '9634fa9' into pull-luajit-jan2018
d98e699 Merge commit 'f3d7507' into pull-luajit-jan2018
91dbe23 Merge branch 'master' into v2.1
f6c52a3 Merge branch 'master' into v2.1
97356f9 Use https for freelists.org links.
e74afb9 Merge remote-tracking branch 'raptorjit/master' into auditlog
9175f10 Merge pull request snabbco#152 from lukego/gcc
4189da6 Just use the default gcc instead of clang 4.0.0.
b8204d9 Merge pull request snabbco#144 from lukego/simplify-lineinfo
eabe1de Merge branch 'raptorjit/master' into auditlog
6999d05 Merge pull request snabbco#147 from lukego/vmprofile-oneliner
e92c500 lj_vmprofile.c: Fix bug where restarting the timer would not work
44bd7a5 Merge branch 'raptorjit/master' into auditlog
9de778c Merge pull request snabbco#150 from lukego/reoptimize-string-intern
4660dbf Merge branch 'master' into v2.1
430d9f8 Fix string.format("%c", 0).
58d0dde Fix IR_BUFPUT assembly.
fcf86b8 lj_str.c: Remove special-case string interning fastpath
b53a438 Merge pull request snabbco#149 from lukego/benchmarks-fix-awk
f66fc04 testsuite/bench: Fix awk parsing of perf output
ed21034 auditlog: Log source (lex events) as msgpack binary
9dac90f auditlog: Log source code (in chunks via lexer events)
8406438 Merge branch 'vmprofile-oneliner' into auditlog
c3b59a7 Merge branch 'raptorjit/master' into auditlog
fd0e49d Support "one-liner" usage of jit.vmprofile.open()
02d596c Merge pull request snabbco#146 from lukego/vmprofile-cmdline
7844c5f Add '-p file' command line syntax for VMProfile
b2be223 Merge pull request snabbco#145 from lukego/fix-warning-and-reusevm
1fa5375 Fix compiler warning & reusevm generated code
de0f442 fixup! auditlog: Can only be opened once now (error on second open)
541d60d auditlog: Can only be opened once now (error on second open)
864a100 Merge branch 'simplify-lineinfo' into auditlog
b5056fa lj_parse.c, lj_debug.c: Remove clever tricks in lineinfo encoding
3a5aa7d lj_trace.c: Do not reuse trace numbers after flush
0b940c5 lj_auditlog.c: Glibc memory stream workaround...
623d45f lj_auditlog.c: Remove fflush() that seems problematic
2276cd8 lj_trace.c: Fix compiler warnings
588e9c3 lj_auditlog.c: Fix compiler warning
3e2d4e4 lj_auditlog.c: Use open_memstream() instead of fmemopen()
a63b5d9 Merge branch 'master' into auditlog
8f94abb Merge pull request snabbco#142 from lukego/integrate-dec2017
b83e78d Merge snabbco#141 branch 'replace-gcref-mref' into integrate
9df1238 Merge snabbco#133 branch 'fix-alloc' into integrate
6d9b473 Merge snabbco#140 branch 'vmprofile-v4' into integrate
5cf2076 Merge snabbco#120 branch 'record-blacklisted-functions' into integrate
0a33b43 Merge snabbco#101 branch 'long-running-stable' into integrate
4fafb32 Merge snabbco#98 branch 'lukego/szirmcode' into integrate
520c6d3 Merge snabbco#86 branch 'ffi-pointer-difference-div' into integrate
5454da8 Merge snabbco#79 branch 'unused-bench-param' into integrate
34f24ae Merge snabbco#81 branch 'gctrace-origin' into integrate
7e34e72 reusevm: Update generated code
07fef11 luajit.c: Add 'raptorjit -a <path> ...' command line auditlog syntax
671d770 lib_jit.c: Add 'jit.auditlog(filename)' Lua API function
857073c lj_auditlog.c: Add lj_auditlog_open(path) API function
7b9840d Merge branch 'replace-gcref-mref' into auditlog
1587377 lj_obj.h: Redefine MRef as simple void* pointer
2f5a9a3 lj_obj.h: Redefine GCRef as simple GCobj* pointer
88cc35c reusevm: update generated code
5843c53 lj_auditlog.c: Log prototype names (GCstr)
4d8b3eb auditlog: Log all loaded bytecode (GCproto objects)
b46e33a Merge branch 'fix-alloc' (incl. master) into auditlog
43691e0 reusevm: Update generated code
ad02215 Merge branch 'raptorjit/master' into fix-alloc
14120c1 Merge pull request snabbco#127 from lukego/lineinfo-no-compress
77dabca Merge pull request snabbco#132 from lukego/jit-log-bytecodes
964585e Merge pull request snabbco#134 from lukego/flush-clear-blacklist
796597d lj_trace.c: unpatch blacklisted bytecodes when flushing traces
06b9f32 lj_state.c: Fix allocation and free of IR buffer
d371db6 lj_state.c: Fix dealloc to match
bc57ceb lj_state.c: Fix bug in allocation of IR buffer
b29101e fixup! lj_auditlog: Improve logging of trace stop/abort
238c698 lj_auditlog: Improve logging of trace stop/abort
fdf39d8 Merge branch 'jit-log-bytecodes' into auditlog
9b2b467 Minor update to jit_State bytecode log
7a4e25b Add log of recorded bytecodes (BCLogRec) to jit_State
783cf2d Merge pull request snabbco#131 from lukego/jit-state-static-tmp-buffers
16121f2 Statically allocate JIT temp buffers
862727f Merge branch 'vmprofile-interp' into auditlog
a8b0f32 lj_vmprofile.c: Add assertions with lua_assert
0823d96 lj_vmprofile.c: Fix trace number overflow (into bucket 0)
ae5c6aa vm_x64.dasc: Fixes to ensure g.lasttrace is a trace number
ef08db2 Merge VMProfile 4.0 from branch 'vmprofile-interp' into auditlog
c1659d9 VMProfile 4.0: File format revision
17b3c9c lj_bcread.c: Fix warning
7f4787a Fix bug in lj_bcread_proto()
5e673ea lj_obj.h: Fix comment about lineinfo (non)compression
c734910 Remove feature to compress GCproto.lineinfo
5a3a889 Merge branch 'vmprofile-interp' into auditlog
5cac382 lj_vmprofile.c: Fix file header initialization
ea7071d MIPS64: Fix xpcall() error case.
d417ded ARM64: Fix xpcall() error case (really).
2b89796 vmprofile 3.0 with more information
bd7266d Track last exited trace (lasttrace) in global_State
089c55a lj_obj.h: Explicitly define implicit VM states
734a3fa Merge branch 'master' into v2.1
7dbf0b0 Fix saved bytecode encapsulated in ELF objects.
33082a6 ARM64: Fix xpcall() error case.
39680ca Merge pull request snabbco#123 from lukego/no-exitstate-pcreg
b6902f8 Remove EXITSTATE_PCREG
99cdfbf MIPS64: Fix register allocation in assembly of HREF.
06cd9fc ARM64: Fix assembly of HREFK.
4b17a6a Merge branch 'master' into v2.1
9f0caad Fix FOLD rule for strength reduction of widening.
f5d810e lj_record.c: Record IFUNC/IFUNCV the same as FUNC/FUNCV
c83fd4c Merge pull request snabbco#116 from lukego/jit-tracebarrier
0be85c6 src/reusevm: update generated files
e182ae8 Add jit.tracebarrier() primitive
850f8c5 LJ_GC64: Make ASMREF_L references 64 bit.
b4ed321 LJ_GC64: Fix ir_khash for non-string GCobj.
6a2d8b0 Merge branch 'master' into v2.1
0c0e7b1 DynASM/x86: Fix potential REL_A overflow.
bf12f1d MIPS64: Hide internal function.
05fbdf5 x64/LJ_GC64: Fix type-check-only variant of SLOAD.
ce6fbb4 lj_record.c: Relax heuristic for root trace meeting JIT loop
a720595 lj_trace.c: Reset hotcount table after flush
01dc844 lj_jit.h: Increase HOTCOUNT_MAX and expand HotPenalty.val
f7212cc lj_trace.c: Clear penalty slot after successful trace
c5923d8 lj_auditlog.c: Log VM definition information
71b7bc8 PPC: Add soft-float support to JIT compiler backend.
e4a76f8 Merge snabbco#98 branch 'szirmcode' into auditlog
ad14f45 GCtrace: Make it possible to map between IR and mcode insns
d400946 Merge pull request snabbco#94 from CapsAdmin/master
fabab00 x64/LJ_GC64: Fix asm_fuseloadk64()
6b08248 x64/LJ_GC64: Fix fallback case of asm_fuseloadk64().
59a3e9f Merge pull request snabbco#90 from lukego/reusevm-toplevel
53e93f1 Merge pull request snabbco#89 from lukego/readme-redux
86f23d6 README: Re-introduce goal of minimizing non-deterministic performance
1b5c2f2 fixup! README: Added note about future platform support
cc5668b README: Added note about future platform support
bebdbac Makefile: Added reusevm target at top-level
7c2a11e fixup! README: shorten intro, move Optimization Resources down
9ab33a8 README: shorten intro, move Optimization Resources down
2bc2d95 README: Make less fuss about Intel Core
88bcf00 README.md: New introduction
9634fa9 Merge branch 'master' into v2.1
f3d7507 Use https for freelists.org links.
46f00a4 Merge pull request snabbco#88 from lukego/pull-luajit
00e983c src/reusevm: update generated files
4cd536f testsuite: Enable Lua 5.2 compat
4e945d2 lj_api.c: Fix breakage in cherry-pick of ffd2610
340f702 Merge *history only* from branch 'luajit/v2.1' commit fd37da0 into pull-luajit
c0165a6 x64/LJ_GC64: Fix emit_rma().
e2cabaf Remove unused define.
07918dc Merge branch 'master' into v2.1
a0a1983 Merge branch 'master' into v2.1
a698e89 FFI: Update docs on compiler limitations.
e091baf Add FOLD rules for mixed BAND/BOR with constants.
2f7f0a2 FFI: Compile bitfield loads/stores.
bddc781 Document added C API extensions from Lua 5.2/5.3.
ffd2610 From Lua 5.2: Add lua_tonumberx() and lua_tointegerx().
9fabcf9 From Lua 5.2: Add luaL_setmetatable().
4a307c1 From Lua 5.2: Add luaL_testudata().
9a520cb From Lua 5.3: Add lua_isyieldable().
f1264bf From Lua 5.2: Add lua_copy().
eaf262d From Lua 5.2: Add lua_version().
b28c891 Refactor with LUA_OK.
d6db005 Add some more changes and extensions from Lua 5.2.
dbe5619 Remove old Lua 5.0 compatibility defines.
e834e9c Merge branch 'master' into v2.1
de9a886 x64/LJ_GC64: Fix emit_loadk64().
5126a06 LJ_GC64: Fix BC_CALLM snapshot handling.
07f976a Remove Lua 5.0 compatibility defines.
cf655d9 lj_crecord.c: JIT pointer difference for all element sizes
48be218 Merge branch 'unique-trace-numbers' into auditlog
4b4dcb0 lj_trace.c: Make trace numbers unique (stop reusing them)
a292144 Merge branch 'vmprofile' into auditlog
4a06d4a lj_vmprofile.c: Fixed to set file magic number with C API calls
8fc672c Merge branch 'gctrace-origin' into auditlog
fcf7053 check-generated-code.nix: Add more verbosity
4aaa844 lj_jit.h: Save 'parent' and 'exitno' fields in GCtrace
5708b06 Merge pull request snabbco#80 from lukego/fix-build
300d14e reusevm: Updated generated code
d27d4d4 check-generated-code.nix: Tweak order of diff args
076d161 check-generated-code.nix: Fixed
8ec77f9 .travis.yml: Update Travis-CI config (was not testing)
d095eae raptorjit.nix: Fix executable name / broken build
f8d1c9e Merge branch 'raptorjit/master' into auditlog
eaf418c Merge pull request snabbco#77 from lukego/vmprofile
d7fd44e testsuite/bench: Remove PARAM_* for unsupported platforms
8cd8f7e vmprofile: Extend Lua API and add test cases
fd37da0 PPC: Add soft-float support to interpreter.
7e662e4 x64/LJ_GC64: Fix emit_rma().
89407be Merge snabbco#64 branch 'lukego/dwarf' into auditlog
a68c8d2 Merge pull request snabbco#37 from lukego/cleanup
8ca5612 Merge pull request snabbco#66 from lukego/vmprofile
f8bd4d8 Merge pull request snabbco#59 from lukego/nix-benchmarks
66fab90 Merge branch 'master' into nix-benchmarks
67864a9 Merge pull request snabbco#70 from lukego/split-build
c297923 Makefile: New 'reusevm' target & bootstrap-skipping method
9fe3967 .travis.yml: Include check-generated-code test
2cf9924 check-generated-code.nix: Check if in-tree VM code is stale
726cc9c raptorjit.nix: preBuild = 'make bootstrapclean'
964cbe4 Makefile: New target 'bootstrapclean' removes in-tree generated code
3ca3df8 README: Update build procedure description
196a9e2 Makefile: s/LuaJIT 2.1.0-beta2/RaptorJIT 1.0.0-alpha1/
086b4c9 Exclude generated code from .gitignore
6d7a8d2 Add VM generated code to the repository
45c2d44 Merge pull request snabbco#69 from lukego/simplify-makefile
f9d7cdd src/Makefile: Shrink by removing obsolete platform logic
65675f5 lj_vmprofile: Port & adapt revisions
24f82aa Merge branch 'lukego-luajit/vmprofile' into vmprofile
0acc230 lj_auditlog: Log the memory containing IR instructions
cf2dfaf Merge branch 'master' into v2.1
82151a4 Modify fix for warning from 'ar'.
6a71e71 Remove unused define.
b0ecc6d FreeBSD/x64: Avoid changing resource limits, if not needed.
a057a07 MIPS64: Add soft-float support to JIT compiler backend.
0e4a551 Merge branch 'master' into v2.1
c7c3c4d MIPS: Fix handling of spare long-range jump slots.
79fe578 Merge branch 'master' into v2.1
7381b62 MIPS: Use precise search for exit jump patching.
0a55469 Generate separate DWARF debug info
376fb58 lj_trace: Log trace aborts to auditlog
2dfdb73 lj_auditlog: Implement logging of trace_abort
b302c6e lj_auditlog: Add "event" object
76be283 lj_auditlog: remove redundant "size" field
5ea4b74 lj_auditlog: use msgpack format for audit log
cb132d1 Add lj_auditlog (very preliminary)
6259c0b Merge branch 'master' into v2.1
630ff31 Add missing LJ_MAX_JSLOTS check.
31afda3 Merge branch 'master' into v2.1
1c89933 Fix LJ_MAX_JSLOTS assertion in rec_check_slots().
8271c64 RELEASE LuaJIT-2.1.0-beta3
e9f8abf Update changelog.
16dc7fb Merge branch 'master' into v2.1
0bf80b0 RELEASE LuaJIT-2.0.5
ae0d438 Update changelog.
b608891 FFI: Update docs on compiler limitations.
cf8a5be Add FOLD rules for mixed BAND/BOR with constants.
fbfbd7b FFI: Compile bitfield loads/stores.
dc5eb65 Merge branch 'master' into v2.1
02b4b1e Add workaround for MSVC 2015 stdio changes.
ed54eac MIPS64: Fix stores of MULTRES.
58aaac3 MIPS64: Fix write barrier in BC_USETV.
18efb33 ARM64: Fix stores to vmstate.
cced178 Document added C API extensions from Lua 5.2/5.3.
de26f76 From Lua 5.2: Add lua_tonumberx() and lua_tointegerx().
2b8de8c From Lua 5.2: Add luaL_setmetatable().
cde968f From Lua 5.2: Add luaL_testudata().
f2e2a3f From Lua 5.3: Add lua_isyieldable().
ef23b70 From Lua 5.2: Add lua_copy().
c67a098 From Lua 5.2: Add lua_version().
9c685f7 Refactor with LUA_OK.
22dfa63 Allow building on Haiku OS.
7c7843e Merge branch 'master' into v2.1
247b362 OSX: Fix build with recent XCode.
ca49220 Merge pull request snabbco#60 from lukego/logo
7bf26e6 Add new "uplifting" RaptorJIT logo
de97b9d Add some more changes and extensions from Lua 5.2.
dc320ca Remove old Lua 5.0 compatibility defines.
c29afcb Merge branch 'master' into v2.1
e205ad0 FFI: Fix FOLD rules for int64_t comparisons.
3143b21 ARM64: Add big-endian support.
4318163 testsuite/bench: Tweaked tests to run longer
f5aa329 README.md: Add note about where benchmark visualizations go
b1b52db Fix markdown goof in README.md
7a35839 Import revamped nix benchmark framework
742104f Merge pull request snabbco#55 from lukego/slow-lea
7356708 md5 benchmark 15% speed by removing "slow LEA"
78f5f1c x64/LJ_GC64: Fix emit_loadk64().
024ade7 LJ_GC64: Fix BC_CALLM snapshot handling.
fa126c5 x64/LJ_GC64: Fix assembly of CNEWI with 64 bit constant pointer.
779a1eb ARM64: Fix Nintendo Switch build.
0cf7885 ARM64: Fix XLOAD/XSTORE with FP operand.
d54947d Merge pull request snabbco#52 from lukego/nix-update
398bd28 Cleaned up nix expressions
82487c7 Travis-CI: Update now that nix runs the test suite
c025664 nix: pin nixpkgs, pin clang 4.0, run test suite
010a99b Add 'testsuite/' from commit '96f816c5e5acbaf33af723e28fba6f4a45e05b6b'
0659092 Remove submodule for testsuite
3ec0f9c Merge pull request snabbco#49 from lukego/fix-kkptr
b1bc13b Compile with -Werror (treat warnings as errors)
fb32f91 Fix IR_KKPTR case of b1cfd27
693909f Merge pull request snabbco#47 from lukego/travis-jit-options
b1cfd27 lj_asm_x86.h: Fix CNEWI for constant pointers
9fcb036 Merge pull request snabbco#44 from lukego/rm-vm-ifdef
d286c95 Fixed typo in jit=-O1
03ad911 Travis CI: Test -O3/-O2/-O1/-joff separately
96f816c Merge branch 'lukego/branchmarks'
c8b2b1c vm_x64.dasc: Resolve +JIT +FFI -X64WIN
684f0f7 Merge pull request snabbco#43 from lukego/rm-dualnum
170c3ac vm_x64.dasc: Fix FORL type coercion
f458d9e Fix mistakes in DUALNUM removal
de5568e Remove Lua 5.0 compatibility defines.
fa02289 Remove DUALNUM mode
0632142 Merge pull request snabbco#40 from lukego/readme-optimize
5f263f2 README.md: Add software optimization links
7a75b53 Merge pull request snabbco#39 from lukego/readme8
f7122f1 README: Declared CPU & Optimization policy
85df062 Merge pull request snabbco#38 from lukego/no-unwind
d0cb401 Merge pull request snabbco#36 from lukego/rm-introspect
5660da3 README.md: Note +NO_UNWIND
8f2744a ifdef-defile: Correct spelling of LJ_NO_UNWIND
f7dc94a Define NO_UNWIND
e2e5689 Remove unused lj_vm_profhook() prototype
972fc1e lib_jit.c: Remove introspection and jit.attach()
521a874 Merge pull request snabbco#35 from lukego/rm-vmevent
df45ff5 Remove PROFILE and VMEVENT features
c40e6bf Merge pull request snabbco#33 from lukego/rm-amalg
0b4a0d2 Merge pull request snabbco#34 from lukego/rm-dotbat
eb052df Remove '*.bat' console build batchfiles
84379d3 Remove "amalg" amalgamated build"
aa188bc Merge pull request snabbco#32 from lukego/nix-comments
cd0e416 README.md: Add link to default.nix
3a523de default.nix: Commented
937375e Merge pull request snabbco#30 from lukego/readme7
a4a5720 README.md: Updated build instructions
631e214 Merge pull request snabbco#27 from lukego/testsuite-plusslow
1c74123 Merge branch 'master' into testsuite-plusslow
03875be Merge pull request snabbco#29 from lukego/nix
1124340 Travis-CI update for nix-based build.
60aa095 Specify build dependencies with nix
78f9acf Makefile: Replace minilua with luajit dependency
5726c88 Switch from gcc to clang
9fedd59 Travis-CI: Added '+slow' argument to test suite
a717eb1 Merge pull request snabbco#21 from lukego/raptorjit-testsuite
bfe7ddc Update Travis-CI to use raptorjit-testsuite
d5b9354 Add raptorjit-testsuite submodule
66b4822 Removed luajit-test-cleanup submodule
e094845 Merge pull request #1 from lukego/fix366
5ccbcfe Make test 366 pass by adding "move:" to expectation
235e82b Merge pull request snabbco#20 from lukego/readme6
28f0f6b README.md: Indulge in more pithy quotations
5af7ae7 Merge pull request snabbco#19 from lukego/dce-fastcall
ac6311d Remove definition of LJ_FASTCALL (a NOP)
ac49377 Remove all uses of LJ_FASTCALL (a NOP)
ad950cc Merge pull request #17 from lukego/readme5
0e8e997 Revised README.md
3523a63 Merge pull request #16 from lukego/copyright
d32cb90 Merge pull request #15 from lukego/contributing
43e53c7 COPYRIGHT: Update the COPYRIGHT file inherited from LuaJIT
9359d14 Added CONTRIBUTING.md
e2eb703 Merge pull request #14 from lukego/testsuite
09b2f3e Add LuaJIT test suite to Travis-CI
8796648 Add LuaJIT/LuaJIT-test-cleanup to submodules/
3ec733f Merge pull request #12 from lukego/readme4
a168dc6 README.md: Add quotes, fix benchmarks link
7aab422 Merge pull request #10 from lukego/rm-dynasm
7237ba5 Merge pull request #9 from lukego/rm-jit
e2968cc Removed dynasm modules for unsupported architectures
b270bf0 Remove jit.p, jit.v, jit.dump, disassemblers
7446725 Merge pull request #8 from lukego/readme3
7fe552f Revised README.md
33e308e Merge pull request #7 from lukego/perftest
f4c8ca6 README.md: Performance regression tests link
18225a6 Merge pull request #6 from lukego/travis
1842bc3 README.md: Added Travis-CI status badge.
0213af2 Added absolute minimum .travis.yml
2fcc0a4 Merge pull request #5 from lukego/bigbang
c2d3d70 Merge pull request #4 from lukego/conduct
4daf440 Merge pull request #3 from lukego/apache2
78a072c Merge pull request #2 from lukego/readme2
40381fa Remove unused code.
58b063b CONDUCT.md: Add simple code of conduct
3127cb0 COPYING: Switch to Apache License 2.0 for new code
827e3d6 Add ifdef-defile config for 'unifdef'
7beb3b2 Remove all architectures except x86-64.
d1c0e13 Remove LUAJIT_USE_PERFTOOLS
006018f Change wording of README
dcda227 Merge pull request #1 from lukego/luajit-v2.1
50ed432 Merge remote-tracking branch 'luajit/v2.1'
5c74044 Added initial README.md
6a66f5d Added LUAJIT_VMPROFILE: new profiler backend
fe8abc881 strings: compare hash as well
014708b Add test for BC_VARG slot revival
63a6f7e Add test for BC_KNIL slot revival under LJ_GC64
14c132e Add tests for table indexing (inspired by snabbco#221)
73139f8 Disable some tests under 5.2 compatibility
f333908 Added bench/PARAM_x86_CI.txt (CI params)
bcf938b Extend cdata_var test slightly
071f050 Exercise string concat some more
e7b029b issue #8 removing tests
7897e7f Add tests for allocation of variable-sized cdata
6fe6fbe add coroutine.lua
ad494d6 issue #8 add strings.lua and literals.lua to the execution
2faff35 issue #8 add strings.lua and literals.lua to the execution
8e20d26 Update README.md
318dedd Update README.md
9b1b6bc Merge branch 'roulette' into maintainer
a71cd6d roulette: Stop seeding the random number generator
96cfbb3 Merge branch 'roulette' into maintainer
b0a75b4 Added bench/roulette.lua
cd42900 issue #8 add dummy file to ensure directory is saved in git
3e73138 issue #8 add dummy file to ensure directory is saved in git
a1dccdb issue #8
6e2030f issue #8 add 5.2.2 tests
ef23b70 issue #8 add 5.2.2 tests
7b022d4 Merge branch 'lua-51-testsuite' of https://github.com/LuaJIT/LuaJIT-test-cleanup into lua-51-testsuite
ea00add issue #8 add 5.2.2 tests
b116313 Update README.md
45b2258 issue #8 initial attempt to get the tests running
0497c7b issue #8 initial attempt to get the tests running
a6bb93e Merge branch 'lua-51-testsuite' of https://github.com/LuaJIT/LuaJIT-test-cleanup into lua-51-testsuite
1cb6161 issue #8 initial attempt to get the tests running
e832e54 Update README.md
e6fc702 Create README.md
0dda7b2 issue #8 baseline checkin of Lua 5.1 test suite
c3224bb Exercise TSETR and TSETM slow paths.
703e9cf Skip some tests under LuaJIT 2.0
d7985d1 Modernise more ffi tests.
a82c499 Modernise some FFI tests.
9c27a59 Fix batch modifier application.
9f1451d Normalise line endings.
3e5cca7 Modernise some tests.
bcd286b Modernise more tests.
1bee68f PUC-Rio Lua compatibility.
6a7e342 Modernise misc/meta_* tests.
e002a08 Improve reporting of failing tests in --quiet mode.
f40304d Modernise string_op test.
b8bbda3 Modernise goto test.
74d256f Remove some already-modernised tests from misc.
c2da6d8 Merge pull request #7 from corsix/shakeup
488e3fb Shake things up.
634b212 Merge pull request #6 from ladc/master
581a474 Put subtests in 'test' dir
1d7aaed Moved proposed test runner and examples into 'experimental' directory.
82586b1 Improve filenames of extracted tests and error reporting in test runner
91cb29b Add workdir argument to extract() in tester module
a6e5102 Capture stderr when tests are run externally in run_single()
14bfa87 Add --runcmd='x' option to test runner
765714f Put @key: value pairs in separate attributes table in parse()
16b3293 Don't print an empty description in build_codestring() in tester module
8859058 Implement @key: value matching in parse() function of tester module
0d975fa Clean up test script (args, tag patterns)
5f331e7 Avoid string.rep in test.lua
24d2b97 Move some tests into new structure and adapt comments to test runner.
b0b3a20 Add test.lua for running and filtering tests.
af54fa1 Add verbose option to run() and run_single()
639480b Add filter() to tester module for filtering tags
a4dd1e0 Add run_single() and run() to tester module.
a4ec002 Add index() and extract() to tester module.
46e1fea Add first part of test framework: parse tests.
a273241 Initial commit

git-subtree-dir: lib/luajit
git-subtree-split: 54cc2a1b4c8ccf6e0c227e9c789947250944b322
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants