Comments (5)
V0.12 存在已知缺陷,在 e52a3c0 修复。请确认问题是否在最新的版本中重现。
from unilang.
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.
异常调用栈信息:
#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.
看起来是和系统自带的不同版本 LLVM 冲突了。
最新版本 LLVM 是可选的:
export UNILANG_NO_LLVM=true
因为共存比较麻烦,所以目前在这类环境中暂不支持 LLVM 。删除后禁用 LLVM 重新编译是否解决问题?
另外如果需要使用 LLVM ,也可以通过 USE_LLVM_PREFIX=/path/to/llvm
指定使用的安装路径前缀,不需要修改脚本代码。(Clang++ 之前就可以通过 CXX
指定。)
from unilang.
使用 UNILANG_NO_LLVM
编译已经解决,感谢!
from unilang.
Related Issues (3)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from unilang.