diff --git a/.github/actions/environment/action.yml b/.github/actions/environment/action.yml
index c5cfd18e00291b4437bcceb3a63b9f5fad565826..412bcc171474753ac641a54e6bd8f27398ef4f98 100644
--- a/.github/actions/environment/action.yml
+++ b/.github/actions/environment/action.yml
@@ -10,7 +10,7 @@ runs:
         echo REPLICATION_SYNC_TIMEOUT=300 | tee -a $GITHUB_ENV
         echo TEST_TIMEOUT=310 | tee -a $GITHUB_ENV
         echo NO_OUTPUT_TIMEOUT=320 | tee -a $GITHUB_ENV
-        echo PRESERVE_ENVVARS=TEST_RUN_RETRIES,SERVER_START_TIMEOUT,REPLICATION_SYNC_TIMEOUT,TEST_TIMEOUT,NO_OUTPUT_TIMEOUT | tee -a $GITHUB_ENV
+        echo PRESERVE_ENVVARS=TEST_RUN_RETRIES,SERVER_START_TIMEOUT,REPLICATION_SYNC_TIMEOUT,TEST_TIMEOUT,NO_OUTPUT_TIMEOUT,GC64 | tee -a $GITHUB_ENV
         # Configure AWS Region to avoid of issue:
         #   https://github.com/tarantool/tarantool-qa/issues/111
         echo AWS_DEFAULT_REGION=MS | tee -a $GITHUB_ENV
diff --git a/.github/workflows/centos_7.yml b/.github/workflows/centos_7.yml
index d3397fc8c92748c9ee6b23eda7889f2d4adb87f9..df67349ca5cf62e00075741b2225d25dc953c248 100644
--- a/.github/workflows/centos_7.yml
+++ b/.github/workflows/centos_7.yml
@@ -41,6 +41,11 @@ jobs:
 
     runs-on: ubuntu-20.04-self-hosted
 
+    strategy:
+      fail-fast: false
+      matrix:
+        gc64: [ "GC64=OFF", "GC64=ON" ]
+
     steps:
       - uses: actions/checkout@v2.3.4
         with:
@@ -52,6 +57,7 @@ jobs:
           RWS_AUTH: ${{ secrets.RWS_AUTH }}
           OS: 'el'
           DIST: '7'
+          GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }}
         uses: ./.github/actions/pack_and_deploy
       - name: call action to send Telegram message on failure
         env:
diff --git a/.github/workflows/centos_8.yml b/.github/workflows/centos_8.yml
index 309994d92de4ca6a8044a3d927386dc4fc7f77e9..56cc624502bec676af8a976b0405e7652319afdc 100644
--- a/.github/workflows/centos_8.yml
+++ b/.github/workflows/centos_8.yml
@@ -41,6 +41,11 @@ jobs:
 
     runs-on: ubuntu-20.04-self-hosted
 
+    strategy:
+      fail-fast: false
+      matrix:
+        gc64: [ "GC64=OFF", "GC64=ON" ]
+
     steps:
       - uses: actions/checkout@v2.3.4
         with:
@@ -52,6 +57,7 @@ jobs:
           RWS_AUTH: ${{ secrets.RWS_AUTH }}
           OS: 'el'
           DIST: '8'
+          GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }}
         uses: ./.github/actions/pack_and_deploy
       - name: call action to send Telegram message on failure
         env:
diff --git a/.github/workflows/debian_10.yml b/.github/workflows/debian_10.yml
index 5f226195514676256c41b7b6cd643cf603ae8b50..bb527807272c1203b43304cf299e6b8f7b72052e 100644
--- a/.github/workflows/debian_10.yml
+++ b/.github/workflows/debian_10.yml
@@ -41,6 +41,11 @@ jobs:
 
     runs-on: ubuntu-20.04-self-hosted
 
+    strategy:
+      fail-fast: false
+      matrix:
+        gc64: [ "GC64=OFF" ]
+
     steps:
       - uses: actions/checkout@v2.3.4
         with:
@@ -52,6 +57,7 @@ jobs:
           RWS_AUTH: ${{ secrets.RWS_AUTH }}
           OS: 'debian'
           DIST: 'buster'
+          GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }}
         uses: ./.github/actions/pack_and_deploy
       - name: call action to send Telegram message on failure
         env:
diff --git a/.github/workflows/debian_11.yml b/.github/workflows/debian_11.yml
index 5ed4a5958d723876940177c3d6f6ed92cbbdc71c..a37fdf3b507045e3c1a9d81a1a6fdea4d50f0b70 100644
--- a/.github/workflows/debian_11.yml
+++ b/.github/workflows/debian_11.yml
@@ -41,6 +41,11 @@ jobs:
 
     runs-on: ubuntu-20.04-self-hosted
 
+    strategy:
+      fail-fast: false
+      matrix:
+        gc64: [ "GC64=OFF" ]
+
     steps:
       - uses: actions/checkout@v2.3.4
         with:
@@ -52,6 +57,7 @@ jobs:
           RWS_AUTH: ${{ secrets.RWS_AUTH }}
           OS: 'debian'
           DIST: 'bullseye'
+          GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }}
         uses: ./.github/actions/pack_and_deploy
       - name: call action to send Telegram message on failure
         env:
diff --git a/.github/workflows/debian_9.yml b/.github/workflows/debian_9.yml
index b94747ceb8888d26b452710bc039c11f9e5ba0a2..38259e7ea470cde735305773cb9e9e2638142b0c 100644
--- a/.github/workflows/debian_9.yml
+++ b/.github/workflows/debian_9.yml
@@ -41,6 +41,11 @@ jobs:
 
     runs-on: ubuntu-20.04-self-hosted
 
+    strategy:
+      fail-fast: false
+      matrix:
+        gc64: [ "GC64=OFF" ]
+
     steps:
       - uses: actions/checkout@v2.3.4
         with:
@@ -52,6 +57,7 @@ jobs:
           RWS_AUTH: ${{ secrets.RWS_AUTH }}
           OS: 'debian'
           DIST: 'stretch'
+          GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }}
         uses: ./.github/actions/pack_and_deploy
       - name: call action to send Telegram message on failure
         env:
diff --git a/.github/workflows/fedora_30.yml b/.github/workflows/fedora_30.yml
index 0b6a196e3d4f6f7d5dcbdde481e9a239e8e1db1b..6c52de05f55430e114604e2fc61c10915ef54313 100644
--- a/.github/workflows/fedora_30.yml
+++ b/.github/workflows/fedora_30.yml
@@ -41,6 +41,11 @@ jobs:
 
     runs-on: ubuntu-20.04-self-hosted
 
+    strategy:
+      fail-fast: false
+      matrix:
+        gc64: [ "GC64=OFF", "GC64=ON" ]
+
     steps:
       - uses: actions/checkout@v2.3.4
         with:
@@ -52,6 +57,7 @@ jobs:
           RWS_AUTH: ${{ secrets.RWS_AUTH }}
           OS: 'fedora'
           DIST: '30'
+          GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }}
         uses: ./.github/actions/pack_and_deploy
       - name: call action to send Telegram message on failure
         env:
diff --git a/.github/workflows/fedora_31.yml b/.github/workflows/fedora_31.yml
index 47e3edaf1e5ba3cf421d18409f2c84cf668f0727..b4b38cdb7389619aec812a8c9a34038228457960 100644
--- a/.github/workflows/fedora_31.yml
+++ b/.github/workflows/fedora_31.yml
@@ -41,6 +41,11 @@ jobs:
 
     runs-on: ubuntu-20.04-self-hosted
 
+    strategy:
+      fail-fast: false
+      matrix:
+        gc64: [ "GC64=OFF", "GC64=ON" ]
+
     steps:
       - uses: actions/checkout@v2.3.4
         with:
@@ -52,6 +57,7 @@ jobs:
           RWS_AUTH: ${{ secrets.RWS_AUTH }}
           OS: 'fedora'
           DIST: '31'
+          GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }}
         uses: ./.github/actions/pack_and_deploy
       - name: call action to send Telegram message on failure
         env:
diff --git a/.github/workflows/fedora_32.yml b/.github/workflows/fedora_32.yml
index bcb3d76e2d9697782d36b95a3cd03ac3cca3bdf5..eba3feeabb99f2904de0a86eee1d2cc9e4a1d3ff 100644
--- a/.github/workflows/fedora_32.yml
+++ b/.github/workflows/fedora_32.yml
@@ -41,6 +41,11 @@ jobs:
 
     runs-on: ubuntu-20.04-self-hosted
 
+    strategy:
+      fail-fast: false
+      matrix:
+        gc64: [ "GC64=OFF", "GC64=ON" ]
+
     steps:
       - uses: actions/checkout@v2.3.4
         with:
@@ -52,6 +57,7 @@ jobs:
           RWS_AUTH: ${{ secrets.RWS_AUTH }}
           OS: 'fedora'
           DIST: '32'
+          GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }}
         uses: ./.github/actions/pack_and_deploy
       - name: call action to send Telegram message on failure
         env:
diff --git a/.github/workflows/fedora_33.yml b/.github/workflows/fedora_33.yml
index 149e7a296194da1206a4e80aa03d5dfcc97dfe13..4c46c7b5f60d5acafae18e3a53f0e7c4dea40fcd 100644
--- a/.github/workflows/fedora_33.yml
+++ b/.github/workflows/fedora_33.yml
@@ -41,6 +41,11 @@ jobs:
 
     runs-on: ubuntu-20.04-self-hosted
 
+    strategy:
+      fail-fast: false
+      matrix:
+        gc64: [ "GC64=OFF", "GC64=ON" ]
+
     steps:
       - uses: actions/checkout@v2.3.4
         with:
@@ -52,6 +57,7 @@ jobs:
           RWS_AUTH: ${{ secrets.RWS_AUTH }}
           OS: 'fedora'
           DIST: '33'
+          GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }}
         uses: ./.github/actions/pack_and_deploy
       - name: call action to send Telegram message on failure
         env:
diff --git a/.github/workflows/fedora_34.yml b/.github/workflows/fedora_34.yml
index ebf13dd07ec7498fdc5a682495e2decf8e57f66d..ffc8e7560c6aa5261d779bfd356d23dc1eca112c 100644
--- a/.github/workflows/fedora_34.yml
+++ b/.github/workflows/fedora_34.yml
@@ -41,6 +41,11 @@ jobs:
 
     runs-on: ubuntu-20.04-self-hosted
 
+    strategy:
+      fail-fast: false
+      matrix:
+        gc64: [ "GC64=OFF", "GC64=ON" ]
+
     steps:
       - uses: actions/checkout@v2.3.4
         with:
@@ -52,6 +57,7 @@ jobs:
           RWS_AUTH: ${{ secrets.RWS_AUTH }}
           OS: 'fedora'
           DIST: '34'
+          GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }}
         uses: ./.github/actions/pack_and_deploy
       - name: call action to send Telegram message on failure
         env:
diff --git a/.github/workflows/fedora_35.yml b/.github/workflows/fedora_35.yml
index 7029513a73e30c4a74bbf3b78b62749bcc8c4e8b..78f0521c0a9d4a34468d7ffb7fb838f3810968ac 100644
--- a/.github/workflows/fedora_35.yml
+++ b/.github/workflows/fedora_35.yml
@@ -41,6 +41,11 @@ jobs:
 
     runs-on: ubuntu-20.04-self-hosted
 
+    strategy:
+      fail-fast: false
+      matrix:
+        gc64: [ "GC64=OFF", "GC64=ON" ]
+
     steps:
       - uses: actions/checkout@v2.3.4
         with:
@@ -52,6 +57,7 @@ jobs:
           RWS_AUTH: ${{ secrets.RWS_AUTH }}
           OS: 'fedora'
           DIST: '35'
+          GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }}
         uses: ./.github/actions/pack_and_deploy
       - name: call action to send Telegram message on failure
         env:
diff --git a/.github/workflows/ubuntu_16_04.yml b/.github/workflows/ubuntu_16_04.yml
index be7bce77723e4e5bc0ef90191a86394485dc365c..c385af4ebd6ac6e1503676305a1e56e55d6fb54f 100644
--- a/.github/workflows/ubuntu_16_04.yml
+++ b/.github/workflows/ubuntu_16_04.yml
@@ -41,6 +41,11 @@ jobs:
 
     runs-on: ubuntu-20.04-self-hosted
 
+    strategy:
+      fail-fast: false
+      matrix:
+        gc64: [ "GC64=OFF" ]
+
     steps:
       - uses: actions/checkout@v2.3.4
         with:
@@ -52,6 +57,7 @@ jobs:
           RWS_AUTH: ${{ secrets.RWS_AUTH }}
           OS: 'ubuntu'
           DIST: 'xenial'
+          GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }}
         uses: ./.github/actions/pack_and_deploy
       - name: call action to send Telegram message on failure
         env:
diff --git a/.github/workflows/ubuntu_18_04.yml b/.github/workflows/ubuntu_18_04.yml
index 62f77884a80a564cc73c02573fc5b3148bd6d7d2..4dc01de86cf94988f0abae821859dbe53b868eb5 100644
--- a/.github/workflows/ubuntu_18_04.yml
+++ b/.github/workflows/ubuntu_18_04.yml
@@ -41,6 +41,11 @@ jobs:
 
     runs-on: ubuntu-20.04-self-hosted
 
+    strategy:
+      fail-fast: false
+      matrix:
+        gc64: [ "GC64=OFF" ]
+
     steps:
       - uses: actions/checkout@v2.3.4
         with:
@@ -52,6 +57,7 @@ jobs:
           RWS_AUTH: ${{ secrets.RWS_AUTH }}
           OS: 'ubuntu'
           DIST: 'bionic'
+          GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }}
         uses: ./.github/actions/pack_and_deploy
       - name: call action to send Telegram message on failure
         env:
diff --git a/.github/workflows/ubuntu_20_04.yml b/.github/workflows/ubuntu_20_04.yml
index 3b13596f2c0d5459b7b8352fea4cfb32f39540d5..2667d3bc2fab8d604c934f8ae1292e4be189ee74 100644
--- a/.github/workflows/ubuntu_20_04.yml
+++ b/.github/workflows/ubuntu_20_04.yml
@@ -41,6 +41,11 @@ jobs:
 
     runs-on: ubuntu-20.04-self-hosted
 
+    strategy:
+      fail-fast: false
+      matrix:
+        gc64: [ "GC64=OFF" ]
+
     steps:
       - uses: actions/checkout@v2.3.4
         with:
@@ -52,6 +57,7 @@ jobs:
           RWS_AUTH: ${{ secrets.RWS_AUTH }}
           OS: 'ubuntu'
           DIST: 'focal'
+          GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }}
         uses: ./.github/actions/pack_and_deploy
       - name: call action to send Telegram message on failure
         env:
diff --git a/.github/workflows/ubuntu_21_04.yml b/.github/workflows/ubuntu_21_04.yml
index 098409fc63ba29915119260a436835b238f7597f..c8d7fb5f5a8773fa920e969c5ca079c4ab4ad20f 100644
--- a/.github/workflows/ubuntu_21_04.yml
+++ b/.github/workflows/ubuntu_21_04.yml
@@ -41,6 +41,11 @@ jobs:
 
     runs-on: ubuntu-20.04-self-hosted
 
+    strategy:
+      fail-fast: false
+      matrix:
+        gc64: [ "GC64=OFF" ]
+
     steps:
       - uses: actions/checkout@v2.3.4
         with:
@@ -52,6 +57,7 @@ jobs:
           RWS_AUTH: ${{ secrets.RWS_AUTH }}
           OS: 'ubuntu'
           DIST: 'hirsute'
+          GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }}
         uses: ./.github/actions/pack_and_deploy
       - name: call action to send Telegram message on failure
         env:
diff --git a/.github/workflows/ubuntu_21_10.yml b/.github/workflows/ubuntu_21_10.yml
index ed640789ee6b909c4e663ab688c31b9311c65c85..921ee58e52c578ad89ce426bc9a1178f55506f56 100644
--- a/.github/workflows/ubuntu_21_10.yml
+++ b/.github/workflows/ubuntu_21_10.yml
@@ -41,6 +41,11 @@ jobs:
 
     runs-on: ubuntu-20.04-self-hosted
 
+    strategy:
+      fail-fast: false
+      matrix:
+        gc64: [ "GC64=OFF" ]
+
     steps:
       - uses: actions/checkout@v2.3.4
         with:
@@ -52,6 +57,7 @@ jobs:
           RWS_AUTH: ${{ secrets.RWS_AUTH }}
           OS: 'ubuntu'
           DIST: 'impish'
+          GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }}
         uses: ./.github/actions/pack_and_deploy
       - name: call action to send Telegram message on failure
         env:
diff --git a/.gitlab.mk b/.gitlab.mk
index 7f9caf20b7c399bc7b94b6205363ed18bd2d9390..bfec4a9476fdc416e5b99a4dd16d8da6f4ffedb2 100644
--- a/.gitlab.mk
+++ b/.gitlab.mk
@@ -101,7 +101,6 @@ endif
 
 RWS_BASE_URL=https://rws.tarantool.org
 RWS_ENDPOINT=${RWS_BASE_URL}/${REPO_TYPE}/${TARANTOOL_SERIES}/${OS}/${DIST}
-PRODUCT_NAME=tarantool
 
 deploy_prepare:
 	rm -rf packpack
@@ -110,6 +109,15 @@ deploy_prepare:
 	rm -rf build
 
 package: deploy_prepare
+	# Set PRODUCT_NAME for the package itself.
+	if [ "$$(echo $(GC64) | sed 's/.*=//')" = ON ]; then                                                           \
+		export PRODUCT_NAME=tarantool-gc64; \
+		if [ "${OS}" = "ubuntu" ] || [ "${OS}" = "debian" ]; then \
+		    $$(sed -i'' -e 's/Package: tarantool$$/Package: tarantool-gc64/' debian/control); \
+		fi; \
+	else \
+		export PRODUCT_NAME=tarantool; \
+	fi; \
 	if [ -n "$(GIT_TAG)" ]; then                                                                                    \
 		export VERSION="$$(echo $(GIT_TAG) | sed 's/-/~/')";                                                    \
 	else                                                                                                            \
@@ -118,13 +126,19 @@ package: deploy_prepare
 	echo VERSION=$$VERSION;                                                                                         \
 	PACKPACK_EXTRA_DOCKER_RUN_PARAMS="--network=host ${PACKPACK_EXTRA_DOCKER_RUN_PARAMS}"                           \
 	TARBALL_EXTRA_ARGS="--exclude=*.exe --exclude=*.dll"                                                            \
-	PRESERVE_ENVVARS="TARBALL_EXTRA_ARGS,${PRESERVE_ENVVARS}" ./packpack/packpack
+	PRESERVE_ENVVARS="PRODUCT_NAME,TARBALL_EXTRA_ARGS,${PRESERVE_ENVVARS}" ./packpack/packpack
 
 deploy:
 	if [ -z "${REPO_TYPE}" ]; then \
 		echo "Env variable 'REPO_TYPE' must be defined!"; \
 		exit 1; \
 	fi; \
+	# Set PRODUCT_NAME for the package in the repository.
+	if [ "$$(echo $(GC64) | sed 's/.*=//')" = ON ]; then                                                                                    \
+		PRODUCT_NAME=tarantool-gc64; \
+	else \
+		PRODUCT_NAME=tarantool; \
+	fi; \
 	CURL_CMD="curl \
 		--location \
 		--fail \
@@ -134,7 +148,7 @@ deploy:
 		--retry-delay 5 \
 		--request PUT ${RWS_ENDPOINT} \
 		--user $${RWS_AUTH} \
-		--form product=${PRODUCT_NAME}"; \
+		--form product=$${PRODUCT_NAME}"; \
 	for f in $$(ls -I '*build*' -I '*.changes' ./build); do \
 		CURL_CMD="$${CURL_CMD} --form $$(basename $${f})=@./build/$${f}"; \
 	done; \
diff --git a/debian/rules b/debian/rules
index 00b0ae9e45d038f445f7e3f26e50641bfe754667..7e9f73d11b7b40540a833733cb8ff5c66c6ba9c3 100755
--- a/debian/rules
+++ b/debian/rules
@@ -19,6 +19,12 @@ DEB_CMAKE_EXTRA_FLAGS := \
 	-DWITH_SYSVINIT=ON \
 	-DWITH_SYSTEMD=$(WITH_SYSTEMD)
 
+# Append CMAKE flag with -DLUAJIT_ENABLE_GC64 value. It is required
+# for CI to build Tarantool with GC64 enabled or disabled dynamically.
+ifneq ($(GC64),)
+	DEB_CMAKE_EXTRA_FLAGS += $(GC64)
+endif
+
 # Install tarantool.service within tarantool-common package, but does not
 # install it within tarantool and tarantool-dev packages.
 DEB_DH_INSTALLINIT_ARGS                     := --name=tarantool
diff --git a/rpm/tarantool.spec b/rpm/tarantool.spec
index 950e5790d8b37d6525ce6efc6e8672cf94640d07..ae01332528fdd330896d5bc37b91a178b7fb9288 100644
--- a/rpm/tarantool.spec
+++ b/rpm/tarantool.spec
@@ -11,6 +11,11 @@
 # need to use cmake3 package to build Tarantool on old systems.
 %define use_cmake3 0%{?rhel} == 7
 
+# Get GC64 variable which can keep compiler flag -DLUAJIT_ENABLE_GC64
+# with a value of ON or OFF to enable or disable luajit gc64.
+# It needs to build Tarantool in CI dynamically.
+%define _gc64 %{getenv:GC64}
+
 %if %use_cmake3
 # XXX: Unfortunately there is no way to make rpmbuild install and
 # enable EPEL repository prior to the build step. However, the
@@ -105,7 +110,16 @@ BuildRequires: python3-pyyaml
 # Install prove to run LuaJIT tests.
 BuildRequires: perl-Test-Harness
 
+# Set product name from env variable or use default "tarantool".
+# It is a temporary solution to define special name of the package
+# to "tarantool-gc64" in CI. It is required to set up Tarantool
+# with GC64 enabled by "yum install tarantool-gc64"
+%define _product %{getenv:PRODUCT_NAME}
+%if "%{_product}"
+Name: %{_product}
+%else
 Name: tarantool
+%endif
 # ${major}.${major}.${minor}.${patch}, e.g. 1.6.8.175
 # Version is updated automaically using git describe --long --always
 Version: 1.7.2.385
@@ -190,6 +204,9 @@ C and Lua/C modules.
 %endif
 %if 0%{?fedora} >= 33
          -DENABLE_LTO=ON \
+%endif
+%if "%{_gc64}"
+         %{_gc64} \
 %endif
          -DENABLE_WERROR:BOOL=ON \
          -DENABLE_DIST:BOOL=ON