Git Product home page Git Product logo

Comments (5)

FrankHB avatar FrankHB commented on September 4, 2024

V0.12 存在已知缺陷,在 e52a3c0 修复。请确认问题是否在最新的版本中重现。

from unilang.

yikesoftware avatar yikesoftware commented on September 4, 2024

V0.12 存在已知缺陷,在 e52a3c0 修复。请确认问题是否在最新的版本中重现。

最新版本 commit 7b0f96a456509887aa188c4357b31bd0e34f4fe8 (HEAD -> master, origin/master, origin/HEAD) 中依然存在此问题

编译前只修改了以下两个文件,设置编译器为clang++,添加自定义LLVM7的搜索目录:

  • build.sh
#!/usr/bin/env bash

set -e
Unilang_BaseDir="$(cd "$(dirname "${BASH_SOURCE[0]}")"; pwd)"
YSLib_BaseDir="$Unilang_BaseDir/3rdparty/YSLib"

: "${CXX:=clang++}" // clang++
: "${CXXFLAGS=-std=c++11 -Wall -Wextra -g}"

. "$Unilang_BaseDir/detect-llvm.sh"

CXXFLAGS_Qt="$(pkg-config --cflags Qt5Widgets Qt5Quick)"
LIBS_Qt="$(pkg-config --libs Qt5Widgets Qt5Quick)"

echo "Building ..."

case $(uname) in
*MSYS* | *MINGW*)
	EXTRA_OPT="-I$YSLib_BaseDir/YFramework/Win32/include \
$YSLib_BaseDir/YFramework/source/YCLib/Host.cpp \
$YSLib_BaseDir/YFramework/Win32/source/YCLib/MinGW32.cpp \
$YSLib_BaseDir/YFramework/Win32/source/YCLib/NLS.cpp \
$YSLib_BaseDir/YFramework/Win32/source/YCLib/Registry.cpp \
$YSLib_BaseDir/YFramework/Win32/source/YCLib/Consoles.cpp"
	;;
*)
	EXTRA_OPT="-fPIC -pthread \
$YSLib_BaseDir/YFramework/source/CHRLib/chrmap.cpp -ldl"
esac

# shellcheck disable=2086
"$CXX" $CXXFLAGS -ounilang $Unilang_BaseDir/src/*.cpp \
$CXXFLAGS_EXTRA \
-Iinclude -I$YSLib_BaseDir/YBase/include \
"$YSLib_BaseDir/YBase/source/ystdex/any.cpp" \
"$YSLib_BaseDir/YBase/source/ystdex/cassert.cpp" \
"$YSLib_BaseDir/YBase/source/ystdex/concurrency.cpp" \
"$YSLib_BaseDir/YBase/source/ystdex/cstdio.cpp" \
"$YSLib_BaseDir/YBase/source/ystdex/exception.cpp" \
"$YSLib_BaseDir/YBase/source/ystdex/memory_resource.cpp" \
"$YSLib_BaseDir/YBase/source/ystdex/node_base.cpp" \
"$YSLib_BaseDir/YBase/source/ystdex/tree.cpp" \
-I$YSLib_BaseDir/YFramework/include \
"$YSLib_BaseDir/YFramework/source/CHRLib/CharacterProcessing.cpp" \
"$YSLib_BaseDir/YFramework/source/CHRLib/MappingEx.cpp" \
"$YSLib_BaseDir/YFramework/source/YCLib/Debug.cpp" \
"$YSLib_BaseDir/YFramework/source/YCLib/FileIO.cpp" \
"$YSLib_BaseDir/YFramework/source/YCLib/FileSystem.cpp" \
"$YSLib_BaseDir/YFramework/source/YCLib/MemoryMapping.cpp" \
"$YSLib_BaseDir/YFramework/source/YCLib/NativeAPI.cpp" \
"$YSLib_BaseDir/YFramework/source/YCLib/YCommon.cpp" \
"$YSLib_BaseDir/YFramework/source/YSLib/Core/YCoreUtilities.cpp" \
"$YSLib_BaseDir/YFramework/source/YSLib/Core/YException.cpp" \
"$YSLib_BaseDir/YFramework/source/YSLib/Core/YObject.cpp" \
"$YSLib_BaseDir/YFramework/source/YSLib/Service/File.cpp" \
"$YSLib_BaseDir/YFramework/source/YSLib/Service/TextFile.cpp" \
$CXXFLAGS_Qt $LIBS_Qt $EXTRA_OPT $LIBS_EXTRA

echo "Done."
  • detect-llvm.sh
#!/usr/bin/env bash
# Requires: LLVM 7.0 installed in some known location.
# Usage: ./detect-llvm.sh, or sourced.

set -e

# XXX: Currently we stick to LLVM 7.

test_llvm7_prefix()
{
	for pfx in "/usr/lib/llvm-7" "/opt/llvm70" "/opt/llvm70" \
		"/usr/local" "/usr" "/home/eqqie/work/llvm-7"; do
		if [[ -x "$pfx/bin/llvm-config" ]]; then
			if [[ $("$pfx/bin/llvm-config" --version) =~ 7\..+ ]]; then
				LLVM_PREFIX="$("$pfx/bin/llvm-config" --prefix)"
				LLVM_BINDIR="$("$pfx/bin/llvm-config" --bindir)"
				return
			fi
		fi
	done
}

test_llvm7_prefix
echo 'Found LLVM 7 prefix:' "$LLVM_PREFIX"
echo 'LLVM version:' "$("$LLVM_BINDIR/llvm-config" --version)"

CXXFLAGS_EXTRA="$("$LLVM_BINDIR/llvm-config" --cxxflags | sed s/-DNDEBUG//g) \
-fexceptions -frtti -Wp,-U_FORTIFY_SOURCE -U_FORTIFY_SOURCE -Wno-date-time"
if echo "$CXX" | grep -q clang; then
	echo 'Found $CXX: '"$CXX"', unsupported compiler options are removed.'
	CXXFLAGS_EXTRA="$(echo "$CXXFLAGS_EXTRA" \
| sed -E 's/-Wno-(class-memaccess|maybe-uninitialized)//g')"
fi
# NOTE: Loading local symbol in LLVM IR requires '--export-dynamic'.
LIBS_EXTRA="$("$LLVM_BINDIR/llvm-config" --ldflags) \
$("$LLVM_BINDIR/llvm-config" --libs) -lffi -Wl,--export-dynamic"

from unilang.

yikesoftware avatar yikesoftware commented on September 4, 2024

异常调用栈信息:

#0  0x00007fffcd449b20 in llvm::StringMapImpl::LookupBucketFor(llvm::StringRef) () at /lib/x86_64-linux-gnu/libLLVM-13.so.1
#1  0x00007fffcd3e7b8c in  () at /lib/x86_64-linux-gnu/libLLVM-13.so.1
#2  0x00007fffcd3e7e0c in  () at /lib/x86_64-linux-gnu/libLLVM-13.so.1
#3  0x00007fffcd3dc188 in  () at /lib/x86_64-linux-gnu/libLLVM-13.so.1
#4  0x00007fffcd3eb82d in  () at /lib/x86_64-linux-gnu/libLLVM-13.so.1
#5  0x00007fffcd42e492 in llvm::ManagedStaticBase::RegisterManagedStatic(void* (*)(), void (*)(void*)) const () at /lib/x86_64-linux-gnu/libLLVM-13.so.1
#6  0x00007fffcd3dbf9a in llvm::cl::OptionCategory::registerCategory() () at /lib/x86_64-linux-gnu/libLLVM-13.so.1
#7  0x00007fffcd3dbf32 in llvm::cl::getGeneralCategory() () at /lib/x86_64-linux-gnu/libLLVM-13.so.1
#8  0x00007fffcd2860c9 in  () at /lib/x86_64-linux-gnu/libLLVM-13.so.1
#9  0x00007ffff7fc947e in call_init (l=<optimized out>, argc=argc@entry=2, argv=argv@entry=0x7fffffffdff8, env=env@entry=0x7fffffffe010) at ./elf/dl-init.c:70
#10 0x00007ffff7fc9568 in call_init (env=0x7fffffffe010, argv=0x7fffffffdff8, argc=2, l=<optimized out>) at ./elf/dl-init.c:33
#11 _dl_init (main_map=0x1b3e850, argc=2, argv=0x7fffffffdff8, env=0x7fffffffe010) at ./elf/dl-init.c:117
#12 0x00007ffff5c6dc85 in __GI__dl_catch_exception (exception=<optimized out>, operate=<optimized out>, args=<optimized out>) at ./elf/dl-error-skeleton.c:182
#13 0x00007ffff7fd0ff6 in dl_open_worker (a=0x7fffffffbf80) at ./elf/dl-open.c:808
#14 dl_open_worker (a=a@entry=0x7fffffffbf80) at ./elf/dl-open.c:771
#15 0x00007ffff5c6dc28 in __GI__dl_catch_exception (exception=<optimized out>, operate=<optimized out>, args=<optimized out>) at ./elf/dl-error-skeleton.c:208
#16 0x00007ffff7fd134e in _dl_open (file=<optimized out>, mode=-2147483390, caller_dlopen=0x7ffff0071a1a <glPrimitiveBoundingBox+3610>, nsid=-2, argc=2, argv=<optimized out>, env=0x7fffffffe010) at ./elf/dl-open.c:883
#17 0x00007ffff5b896bc in dlopen_doit (a=a@entry=0x7fffffffc1f0) at ./dlfcn/dlopen.c:56
#18 0x00007ffff5c6dc28 in __GI__dl_catch_exception (exception=exception@entry=0x7fffffffc150, operate=<optimized out>, args=<optimized out>) at ./elf/dl-error-skeleton.c:208
#19 0x00007ffff5c6dcf3 in __GI__dl_catch_error (objname=0x7fffffffc1a8, errstring=0x7fffffffc1b0, mallocedp=0x7fffffffc1a7, operate=<optimized out>, args=<optimized out>) at ./elf/dl-error-skeleton.c:227
#20 0x00007ffff5b891ae in _dlerror_run (operate=operate@entry=0x7ffff5b89660 <dlopen_doit>, args=args@entry=0x7fffffffc1f0) at ./dlfcn/dlerror.c:138
#21 0x00007ffff5b89748 in dlopen_implementation (dl_caller=<optimized out>, mode=<optimized out>, file=<optimized out>) at ./dlfcn/dlopen.c:71
#22 ___dlopen (file=<optimized out>, mode=<optimized out>) at ./dlfcn/dlopen.c:81
#23 0x00007ffff0071a1a in glPrimitiveBoundingBox () at /lib/x86_64-linux-gnu/libGLX_mesa.so.0
#24 0x00007ffff0071b0d in glPrimitiveBoundingBox () at /lib/x86_64-linux-gnu/libGLX_mesa.so.0
#25 0x00007ffff0050305 in  () at /lib/x86_64-linux-gnu/libGLX_mesa.so.0
#26 0x00007ffff0066e9c in  () at /lib/x86_64-linux-gnu/libGLX_mesa.so.0
#27 0x00007ffff00583b9 in  () at /lib/x86_64-linux-gnu/libGLX_mesa.so.0
#28 0x00007ffff0054b1c in  () at /lib/x86_64-linux-gnu/libGLX_mesa.so.0
#29 0x00007ffff01437d3 in  () at /usr/lib/x86_64-linux-gnu/qt5/plugins/xcbglintegrations/libqxcb-glx-integration.so
#30 0x00007ffff25ef025 in QXcbWindow::create() () at /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#31 0x00007ffff25db636 in QXcbIntegration::createPlatformWindow(QWindow*) const () at /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#32 0x00007ffff6dd3b21 in QWindowPrivate::create(bool, unsigned long long) () at /lib/x86_64-linux-gnu/libQt5Gui.so.5
#33 0x00007ffff7a814f5 in QWidgetPrivate::create() () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#34 0x00007ffff7a81b1e in QWidget::create(unsigned long long, bool, bool) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#35 0x00007ffff7a8eebe in QWidgetPrivate::setVisible(bool) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#36 0x0000000000671b9a in Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7::operator()(std::shared_ptr<QWidget> const&) const (this=<optimized out>, p_wgt=<optimized out>) at /home/eqqie/work/unilang/src/UnilangQt.cpp:275
#37 std::__invoke_impl<Unilang::ValueToken, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, std::shared_ptr<QWidget>&>(std::__invoke_other, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, std::shared_ptr<QWidget>&) (__f=<optimized out>, __args=<optimized out>) at /usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:61
#38 std::__invoke<Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, std::shared_ptr<QWidget>&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, std::shared_ptr<QWidget>&) (__fn=<optimized out>, __args=<optimized out>) at /usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:96
#39 std::reference_wrapper<Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const>::operator()<std::shared_ptr<QWidget>&>(std::shared_ptr<QWidget>&) const (this=<optimized out>, __args=<optimized out>) at /usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/refwrap.h:349
#40 ystdex::call_projection<void (std::shared_ptr<QWidget>&, Unilang::Context&), ystdex::cpp2014::integer_sequence<unsigned long, 0ul> >::apply_call<std::reference_wrapper<Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const> const&, std::tuple<std::shared_ptr<QWidget>&, Unilang::Context&> >(std::reference_wrapper<Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const> const&, std::tuple<std::shared_ptr<QWidget>&, Unilang::Context&>&&) (f=<optimized out>, t=<optimized out>) at /home/eqqie/work/unilang/3rdparty/YSLib/YBase/include/ystdex/apply.hpp:152
#41 ystdex::call_projection<void (std::shared_ptr<QWidget>&, Unilang::Context&), ystdex::cpp2014::integer_sequence<unsigned long, 0ul> >::call<std::reference_wrapper<Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const> const&>(std::reference_wrapper<Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const> const&, std::shared_ptr<QWidget>&, Unilang::Context&) (f=<optimized out>, args=<optimized out>, args=<optimized out>) at /home/eqqie/work/unilang/3rdparty/YSLib/YBase/include/ystdex/apply.hpp:179
#42 ystdex::expand_proxy<void (std::shared_ptr<QWidget>&, Unilang::Context&), 2ul>::call<std::reference_wrapper<Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const> const&, std::shared_ptr<QWidget>&, Unilang::Context&>(std::reference_wrapper<Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const> const&, std::shared_ptr<QWidget>&, Unilang::Context&) (args=<optimized out>, args=<optimized out>, args=<optimized out>) at /home/eqqie/work/unilang/3rdparty/YSLib/YBase/include/ystdex/expanded_function.hpp:85
#43 ystdex::expanded_caller<void (std::shared_ptr<QWidget>&, Unilang::Context&), std::reference_wrapper<Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const> >::operator()<std::shared_ptr<QWidget>&, Unilang::Context&>(std::shared_ptr<QWidget>&, Unilang::Context&) const (this=<optimized out>, args=<optimized out>, args=<optimized out>) at /home/eqqie/work/unilang/3rdparty/YSLib/YBase/include/ystdex/expanded_function.hpp:158
#44 Unilang::Forms::CallUnaryAs<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::TermNode&, Unilang::Context&)::{lambda(Unilang::TermNode&)#1}::operator()(Unilang::TermNode&) const (tm=<optimized out>, this=<optimized out>) at include/Forms.h:233
#45 std::__invoke_impl<Unilang::ValueToken, Unilang::Forms::CallUnaryAs<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::TermNode&, Unilang::Context&)::{lambda(Unilang::TermNode&)#1}&, Unilang::TermNode&>(std::__invoke_other, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&) (__args=<optimized out>, __f=<optimized out>) at /usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:61
#46 std::__invoke<Unilang::Forms::CallUnaryAs<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::TermNode&, Unilang::Context&)::{lambda(Unilang::TermNode&)#1}&, Unilang::TermNode&>(Unilang::Forms::CallUnaryAs<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::TermNode&, Unilang::Context&)::{lambda(Unilang::TermNode&)#1}&, Unilang::TermNode&) (__args=<optimized out>, __fn=<optimized out>) at /usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/invoke.h:96
#47 std::reference_wrapper<Unilang::Forms::CallUnaryAs<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::TermNode&, Unilang::Context&)::{lambda(Unilang::TermNode&)#1}>::operator()<Unilang::TermNode&>(Unilang::TermNode&) const (__args=<optimized out>, this=<optimized out>) at /usr/lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/bits/refwrap.h:349
#48 ystdex::call_projection<void (Unilang::TermNode&), ystdex::cpp2014::integer_sequence<unsigned long, 0ul> >::apply_call<std::reference_wrapper<Unilang::Forms::CallUnaryAs<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::TermNode&, Unilang::Context&)::{lambda(Unilang::TermNode&)#1}> const&, std::tuple<Unilang::TermNode&> >(std::reference_wrapper<Unilang::Forms::CallUnaryAs<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::TermNode&, Unilang::Context&)::{lambda(Unilang::TermNode&)#1}> const&, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&) (f=<optimized out>, t=<optimized out>) at /home/eqqie/work/unilang/3rdparty/YSLib/YBase/include/ystdex/apply.hpp:152
#49 ystdex::call_projection<void (Unilang::TermNode&), ystdex::cpp2014::integer_sequence<unsigned long, 0ul> >::call<std::reference_wrapper<Unilang::Forms::CallUnaryAs<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::TermNode&, Unilang::Context&)::{lambda(Unilang::TermNode&)#1}> const&>(std::reference_wrapper<Unilang::Forms::CallUnaryAs<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::TermNode&, Unilang::Context&)::{lambda(Unilang::TermNode&)#1}> const&, Unilang::TermNode&) (args=<optimized out>, f=<optimized out>) at /home/eqqie/work/unilang/3rdparty/YSLib/YBase/include/ystdex/apply.hpp:179
#50 ystdex::expanded_caller<void (Unilang::TermNode&), std::reference_wrapper<Unilang::Forms::CallUnaryAs<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::TermNode&, Unilang::Context&)::{lambda(Unilang::TermNode&)#1}> >::operator()<Unilang::TermNode&>(Unilang::TermNode&) const (this=<optimized out>, args=<optimized out>) at /home/eqqie/work/unilang/3rdparty/YSLib/YBase/include/ystdex/expanded_function.hpp:158
#51 ystdex::details::invoke_impl<ystdex::expanded_caller<void (Unilang::TermNode&), std::reference_wrapper<Unilang::Forms::CallUnaryAs<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::TermNode&, Unilang::Context&)::{lambda(Unilang::TermNode&)#1}> >, Unilang::TermNode&>(ystdex::expanded_caller<void (Unilang::TermNode&), std::reference_wrapper<Unilang::Forms::CallUnaryAs<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::TermNode&, Unilang::Context&)::{lambda(Unilang::TermNode&)#1}> >&&, Unilang::TermNode&) (f=<optimized out>, args=<optimized out>) at /home/eqqie/work/unilang/3rdparty/YSLib/YBase/include/ystdex/invoke.hpp:486
#52 ystdex::cpp2017::invoke<ystdex::expanded_caller<void (Unilang::TermNode&), std::reference_wrapper<Unilang::Forms::CallUnaryAs<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::TermNode&, Unilang::Context&)::{lambda(Unilang::TermNode&)#1}> >, Unilang::TermNode&>(ystdex::expanded_caller<void (Unilang::TermNode&), std::reference_wrapper<Unilang::Forms::CallUnaryAs<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::TermNode&, Unilang::Context&)::{lambda(Unilang::TermNode&)#1}> >&&, Unilang::TermNode&) (f=<optimized out>, args=<optimized out>) at /home/eqqie/work/unilang/3rdparty/YSLib/YBase/include/ystdex/invoke.hpp:568
#53 ystdex::details::invoke_nonvoid_impl<ystdex::expanded_caller<void (Unilang::TermNode&), std::reference_wrapper<Unilang::Forms::CallUnaryAs<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::TermNode&, Unilang::Context&)::{lambda(Unilang::TermNode&)#1}> >, Unilang::TermNode&>(std::integral_constant<bool, false>, ystdex::expanded_caller<void (Unilang::TermNode&), std::reference_wrapper<Unilang::Forms::CallUnaryAs<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::TermNode&, Unilang::Context&)::{lambda(Unilang::TermNode&)#1}> >&&, Unilang::TermNode&) (f=<optimized out>, args=<optimized out>) at /home/eqqie/work/unilang/3rdparty/YSLib/YBase/include/ystdex/invoke.hpp:589
#54 ystdex::invoke_nonvoid<ystdex::expanded_caller<void (Unilang::TermNode&), std::reference_wrapper<Unilang::Forms::CallUnaryAs<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::TermNode&, Unilang::Context&)::{lambda(Unilang::TermNode&)#1}> >, Unilang::TermNode&>(ystdex::expanded_caller<void (Unilang::TermNode&), std::reference_wrapper<Unilang::Forms::CallUnaryAs<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::TermNode&, Unilang::Context&)::{lambda(Unilang::TermNode&)#1}> >&&, Unilang::TermNode&) (f=<optimized out>, args=<optimized out>) at /home/eqqie/work/unilang/3rdparty/YSLib/YBase/include/ystdex/invoke.hpp:619
#55 Unilang::Forms::CallUnary<Unilang::Forms::CallUnaryAs<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::TermNode&, Unilang::Context&)::{lambda(Unilang::TermNode&)#1}>(Unilang::Forms::CallUnaryAs<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::TermNode&, Unilang::Context&)::{lambda(Unilang::TermNode&)#1}&&, Unilang::TermNode&)::{lambda(Unilang::TermNode&)#1}::operator()(Unilang::TermNode&) const (tm=<optimized out>, this=<optimized out>) at include/Forms.h:222
#56 ystdex::call_projection<void (Unilang::TermNode&), ystdex::cpp2014::integer_sequence<unsigned long, 0ul> >::apply_call<Unilang::Forms::CallUnary<Unilang::Forms::CallUnaryAs<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::TermNode&, Unilang::Context&)::{lambda(Unilang::TermNode&)#1}>(Unilang::Forms::CallUnaryAs<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::TermNode&, Unilang::Context&)::{lambda(Unilang::TermNode&)#1}&&, Unilang::TermNode&)::{lambda(Unilang::TermNode&)#1}&, std::tuple<Unilang::TermNode&> >(Unilang::Forms::CallUnaryAs<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::TermNode&, Unilang::Context&)::{lambda(Unilang::TermNode&)#1}&&, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&) (f=<optimized out>, t=<optimized out>) at /home/eqqie/work/unilang/3rdparty/YSLib/YBase/include/ystdex/apply.hpp:152
#57 ystdex::call_projection<void (Unilang::TermNode&), ystdex::cpp2014::integer_sequence<unsigned long, 0ul> >::call<Unilang::Forms::CallUnary<Unilang::Forms::CallUnaryAs<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::TermNode&, Unilang::Context&)::{lambda(Unilang::TermNode&)#1}>(Unilang::Forms::CallUnaryAs<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::TermNode&, Unilang::Context&)::{lambda(Unilang::TermNode&)#1}&&, Unilang::TermNode&)::{lambda(Unilang::TermNode&)#1}&>(Unilang::Forms::CallUnaryAs<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::TermNode&, Unilang::Context&)::{lambda(Unilang::TermNode&)#1}&&, Unilang::TermNode&) (args=<optimized out>, f=<optimized out>) at /home/eqqie/work/unilang/3rdparty/YSLib/YBase/include/ystdex/apply.hpp:179
#58 _ZN7Unilang5Forms12CallRawUnaryIZNS0_9CallUnaryIZNS0_11CallUnaryAsIKSt10shared_ptrI7QWidgetERKZNS_12_GLOBAL__N_118InitializeQtNativeERNS_11InterpreterERiPPcE3$_7JRNS_7ContextEEEENS_15ReductionStatusEOT0_RNS_8TermNodeEDpOT1_EUlSN_E_JEEESJ_OT_SN_DpOT0_EUlSN_E_JEEEDTclsr6ystdex12expand_proxyIFvSN_SW_EEE4callfp_clL_ZN8platform5DerefIN6ystdex7details13list_iteratorISM_EEEEDTdefL0p_EST_EclL_ZSt4nextIS14_ESS_SS_NSt15iterator_traitsISS_E15difference_typeEEcldtfp0_5beginELi1EEEspclsr3stdE7forwardIDtfp1_EEfp1_EEEST_SN_SW_ (term=..., f=<optimized out>) at include/Forms.h:183
#59 Unilang::Forms::CallUnary<Unilang::Forms::CallUnaryAs<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::TermNode&, Unilang::Context&)::{lambda(Unilang::TermNode&)#1}>(Unilang::Forms::CallUnaryAs<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::TermNode&, Unilang::Context&)::{lambda(Unilang::TermNode&)#1}&&, Unilang::TermNode&) (f=<optimized out>, term=...) at include/Forms.h:221
#60 Unilang::Forms::CallUnaryAs<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::Context&>(Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7 const&, Unilang::TermNode&, Unilang::Context&) (term=..., f=<optimized out>, args=<optimized out>) at include/Forms.h:232
#61 Unilang::Forms::UnaryAsExpansion<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7>::operator()<Unilang::TermNode&, Unilang::Context&>(Unilang::TermNode&, Unilang::Context&) const (this=<optimized out>, args=..., args=<optimized out>) at include/Forms.h:336
#62 ystdex::details::invoke_impl<Unilang::Forms::UnaryAsExpansion<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7>&, Unilang::TermNode&, Unilang::Context&>(Unilang::Forms::UnaryAsExpansion<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7>&, Unilang::TermNode&, Unilang::Context&) (f=<optimized out>, args=..., args=<optimized out>) at /home/eqqie/work/unilang/3rdparty/YSLib/YBase/include/ystdex/invoke.hpp:486
#63 ystdex::cpp2017::invoke<Unilang::Forms::UnaryAsExpansion<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7>&, Unilang::TermNode&, Unilang::Context&>(Unilang::Forms::UnaryAsExpansion<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7>&, Unilang::TermNode&, Unilang::Context&) (f=<optimized out>, args=..., args=<optimized out>) at /home/eqqie/work/unilang/3rdparty/YSLib/YBase/include/ystdex/invoke.hpp:568
#64 ystdex::function_base<ystdex::function_traits<Unilang::ReductionStatus (Unilang::TermNode&, Unilang::Context&), (ystdex::empty_function_policy)2>, Unilang::ReductionStatus (Unilang::TermNode&, Unilang::Context&)>::invoker<ystdex::any_ops::value_handler<Unilang::Forms::UnaryAsExpansion<std::shared_ptr<QWidget> const, Unilang::(anonymous namespace)::InitializeQtNative(Unilang::Interpreter&, int&, char**)::$_7>, std::integral_constant<bool, false> > >::invoke(ystdex::any const&, Unilang::TermNode&, Unilang::Context&) (a=<optimized out>, args=..., args=<optimized out>) at /home/eqqie/work/unilang/3rdparty/YSLib/YBase/include/ystdex/function.hpp:548
#65 0x00000000005cd216 in ystdex::function_traits<Unilang::ReductionStatus (Unilang::Context&), (ystdex::empty_function_policy)2>::call<ystdex::any, Unilang::ReductionStatus (*)(ystdex::any const&, Unilang::Context&)>(ystdex::any const&, Unilang::ReductionStatus (* const&)(ystdex::any const&, Unilang::Context&), Unilang::Context&) (content=..., f=@0x7fffffffdd30: 0x5eaf80 <ystdex::function_base<ystdex::function_traits<Unilang::ReductionStatus (Unilang::Context&), (ystdex::empty_function_policy)2>, Unilang::ReductionStatus (Unilang::Context&)>::invoker<ystdex::any_ops::allocator_value_handler<ystdex::pmr::polymorphic_allocator<unsigned char>, Unilang::FormContextHandler::CallN(unsigned long, Unilang::TermNode&, Unilang::Context&) const::$_4> >::invoke(ystdex::any const&, Unilang::Context&)>, args=<optimized out>) at /home/eqqie/work/unilang/3rdparty/YSLib/YBase/include/ystdex/function.hpp:453
#66 ystdex::function_base<ystdex::function_traits<Unilang::ReductionStatus (Unilang::Context&), (ystdex::empty_function_policy)2>, Unilang::ReductionStatus (Unilang::Context&)>::operator()(Unilang::Context&) const (this=<optimized out>, args=<optimized out>) at /home/eqqie/work/unilang/3rdparty/YSLib/YBase/include/ystdex/function.hpp:715
#67 Unilang::Context::ApplyTail() (this=0x7fffffffdc50) at /home/eqqie/work/unilang/src/Context.cpp:157
#68 0x00000000005cdb58 in Unilang::Context::Rewrite(ystdex::expanded_function<Unilang::ReductionStatus (Unilang::Context&), ystdex::function_base<ystdex::function_traits<Unilang::ReductionStatus (Unilang::Context&), (ystdex::empty_function_policy)2>, Unilang::ReductionStatus (Unilang::Context&)> >) (this=0x7fffffffdc50, reduce=...) at /home/eqqie/work/unilang/src/Context.cpp:256
#69 0x000000000060a7fb in Unilang::Interpreter::RunScript(ystdex::cpp2017::basic_string<char, std::char_traits<char>, ystdex::pmr::polymorphic_allocator<char> >) (this=0x7fffffffdb10, filename=...) at /home/eqqie/work/unilang/src/Interpreter.cpp:326
#70 0x0000000000614498 in main::$_0::operator()() const (this=<optimized out>) at /home/eqqie/work/unilang/src/Main.cpp:1144
#71 YSLib::TryExecute<main::$_0>(main::$_0, char const*, platform::Descriptions::RecordLevel, ystdex::function_base<ystdex::function_traits<void (std::exception const&, platform::Descriptions::RecordLevel), (ystdex::empty_function_policy)2>, void (std::exception const&, platform::Descriptions::RecordLevel)> const&) (desc=<optimized out>, lv=platform::Descriptions::RecordLevel::Alert, f=..., trace=<optimized out>) at /home/eqqie/work/unilang/3rdparty/YSLib/YFramework/include/YSLib/Core/YException.h:210
#72 YSLib::FilterExceptions<main::$_0>(main::$_0, char const*, platform::Descriptions::RecordLevel, ystdex::function_base<ystdex::function_traits<void (std::exception const&, platform::Descriptions::RecordLevel), (ystdex::empty_function_policy)2>, void (std::exception const&, platform::Descriptions::RecordLevel)>)::{lambda()#1}::operator()() const (this=<optimized out>) at /home/eqqie/work/unilang/3rdparty/YSLib/YFramework/include/YSLib/Core/YException.h:252
#73 ystdex::details::invoke_impl<YSLib::FilterExceptions<main::$_0>(main::$_0, char const*, platform::Descriptions::RecordLevel, ystdex::function_base<ystdex::function_traits<void (std::exception const&, platform::Descriptions::RecordLevel), (ystdex::empty_function_policy)2>, void (std::exception const&, platform::Descriptions::RecordLevel)>)::{lambda()#1}>(YSLib::FilterExceptions<main::$_0>(main::$_0, char const*, platform::Descriptions::RecordLevel, ystdex::function_base<ystdex::function_traits<void (std::exception const&, platform::Descriptions::RecordLevel), (ystdex::empty_function_policy)2>, void (std::exception const&, platform::Descriptions::RecordLevel)>)::{lambda()#1}&&) (f=<optimized out>) at /home/eqqie/work/unilang/3rdparty/YSLib/YBase/include/ystdex/invoke.hpp:486
#74 ystdex::cpp2017::invoke<YSLib::FilterExceptions<main::$_0>(main::$_0, char const*, platform::Descriptions::RecordLevel, ystdex::function_base<ystdex::function_traits<void (std::exception const&, platform::Descriptions::RecordLevel), (ystdex::empty_function_policy)2>, void (std::exception const&, platform::Descriptions::RecordLevel)>)::{lambda()#1}>(YSLib::FilterExceptions<main::$_0>(main::$_0, char const*, platform::Descriptions::RecordLevel, ystdex::function_base<ystdex::function_traits<void (std::exception const&, platform::Descriptions::RecordLevel), (ystdex::empty_function_policy)2>, void (std::exception const&, platform::Descriptions::RecordLevel)>)::{lambda()#1}&&) (f=<optimized out>) at /home/eqqie/work/unilang/3rdparty/YSLib/YBase/include/ystdex/invoke.hpp:568
#75 ystdex::details::invoke_nonvoid_impl<YSLib::FilterExceptions<main::$_0>(main::$_0, char const*, platform::Descriptions::RecordLevel, ystdex::function_base<ystdex::function_traits<void (std::exception const&, platform::Descriptions::RecordLevel), (ystdex::empty_function_policy)2>, void (std::exception const&, platform::Descriptions::RecordLevel)>)::{lambda()#1}>(std::integral_constant<bool, false>, YSLib::FilterExceptions<main::$_0>(main::$_0, char const*, platform::Descriptions::RecordLevel, ystdex::function_base<ystdex::function_traits<void (std::exception const&, platform::Descriptions::RecordLevel), (ystdex::empty_function_policy)2>, void (std::exception const&, platform::Descriptions::RecordLevel)>)::{lambda()#1}&&) (f=<optimized out>) at /home/eqqie/work/unilang/3rdparty/YSLib/YBase/include/ystdex/invoke.hpp:589
#76 ystdex::invoke_nonvoid<YSLib::FilterExceptions<main::$_0>(main::$_0, char const*, platform::Descriptions::RecordLevel, ystdex::function_base<ystdex::function_traits<void (std::exception const&, platform::Descriptions::RecordLevel), (ystdex::empty_function_policy)2>, void (std::exception const&, platform::Descriptions::RecordLevel)>)::{lambda()#1}>(YSLib::FilterExceptions<main::$_0>(main::$_0, char const*, platform::Descriptions::RecordLevel, ystdex::function_base<ystdex::function_traits<void (std::exception const&, platform::Descriptions::RecordLevel), (ystdex::empty_function_policy)2>, void (std::exception const&, platform::Descriptions::RecordLevel)>)::{lambda()#1}&&) (f=<optimized out>) at /home/eqqie/work/unilang/3rdparty/YSLib/YBase/include/ystdex/invoke.hpp:619
#77 YSLib::TryInvoke<YSLib::FilterExceptions<main::$_0>(main::$_0, char const*, platform::Descriptions::RecordLevel, ystdex::function_base<ystdex::function_traits<void (std::exception const&, platform::Descriptions::RecordLevel), (ystdex::empty_function_policy)2>, void (std::exception const&, platform::Descriptions::RecordLevel)>)::{lambda()#1}>(YSLib::FilterExceptions<main::$_0>(main::$_0, char const*, platform::Descriptions::RecordLevel, ystdex::function_base<ystdex::function_traits<void (std::exception const&, platform::Descriptions::RecordLevel), (ystdex::empty_function_policy)2>, void (std::exception const&, platform::Descriptions::RecordLevel)>)::{lambda()#1}&&) (f=<optimized out>) at /home/eqqie/work/unilang/3rdparty/YSLib/YFramework/include/YSLib/Core/YException.h:231
#78 YSLib::FilterExceptions<main::$_0>(main::$_0, char const*, platform::Descriptions::RecordLevel, ystdex::function_base<ystdex::function_traits<void (std::exception const&, platform::Descriptions::RecordLevel), (ystdex::empty_function_policy)2>, void (std::exception const&, platform::Descriptions::RecordLevel)>) (f=..., lv=platform::Descriptions::RecordLevel::Alert, desc=<optimized out>, trace=...) at /home/eqqie/work/unilang/3rdparty/YSLib/YFramework/include/YSLib/Core/YException.h:251
#79 main(int, char**) (argc=argc@entry=2, argv=argv@entry=0x7fffffffdff8) at /home/eqqie/work/unilang/src/Main.cpp:1087
#80 0x00007ffff5b22d90 in __libc_start_call_main (main=main@entry=0x612d50 <main(int, char**)>, argc=argc@entry=2, argv=argv@entry=0x7fffffffdff8) at ../sysdeps/nptl/libc_start_call_main.h:58
#81 0x00007ffff5b22e40 in __libc_start_main_impl (main=0x612d50 <main(int, char**)>, argc=2, argv=0x7fffffffdff8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffdfe8) at ../csu/libc-start.c:392
#82 0x00000000005cbb05 in _start ()

from unilang.

FrankHB avatar FrankHB commented on September 4, 2024

看起来是和系统自带的不同版本 LLVM 冲突了。

最新版本 LLVM 是可选的:

export UNILANG_NO_LLVM=true

因为共存比较麻烦,所以目前在这类环境中暂不支持 LLVM 。删除后禁用 LLVM 重新编译是否解决问题?

另外如果需要使用 LLVM ,也可以通过 USE_LLVM_PREFIX=/path/to/llvm 指定使用的安装路径前缀,不需要修改脚本代码。(Clang++ 之前就可以通过 CXX 指定。)

from unilang.

yikesoftware avatar yikesoftware commented on September 4, 2024

使用 UNILANG_NO_LLVM 编译已经解决,感谢!

from unilang.

Related Issues (3)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.