Bruce ae034cf692 fix: use same hash seed when creating VM for shared tables (#2122)
When creating a new Lua VM to load shared tables, use the same hash
seed from the parent VM instead of generating a new random seed.

Different VMs have different hash seeds, causing identical strings to
have different hash values. When looking up string keys in a shared
table from another VM, the hash-based bucket lookup fails because the
search key's hash doesn't match the stored key's hash.

Solution: Pass G(L)->seed to lua_newstate() instead of using
luaL_newstate() which generates a new random seed each time.
2025-12-24 19:27:20 +08:00
2025-10-16 23:10:14 +08:00
2025-12-01 23:24:27 +08:00
2025-10-16 23:10:14 +08:00
2025-12-23 10:19:09 +08:00
2025-12-16 08:34:36 +08:00
2025-10-16 23:10:14 +08:00
2014-04-21 08:47:45 +08:00
2025-01-14 09:50:26 +08:00
2025-01-14 09:50:26 +08:00

skynet logo

Skynet is a multi-user Lua framework supporting the actor model, often used in games.

It is heavily used in the Chinese game industry, but is also now spreading to other industries, and to English-centric developers. To visit related sites, visit the Chinese pages using something like Google or Deepl translate.

The community is friendly and almost all contributors can speak English, so English speakers are welcome to ask questions in Discussion, or submit issues in English.

Build

For Linux, install autoconf first for jemalloc:

git clone https://github.com/cloudwu/skynet.git
cd skynet
make 'PLATFORM'  # PLATFORM can be linux, macosx, freebsd now

Or:

export PLAT=linux
make

For FreeBSD , use gmake instead of make.

Test

Run these in different consoles:

./skynet examples/config	# Launch first skynet node  (Gate server) and a skynet-master (see config for standalone option)
./3rd/lua/lua examples/client.lua 	# Launch a client, and try to input hello.

About Lua version

Skynet now uses a modified version of lua 5.4.7 ( https://github.com/ejoy/lua/tree/skynet54 ) for multiple lua states.

Official Lua versions can also be used as long as the Makefile is edited.

How To Use

Description
No description provided
Readme MIT 69 MiB
Languages
C 73.2%
Lua 23.5%
HTML 2.4%
Makefile 0.9%