Coder Social home page Coder Social logo

llvmtools's Issues

Make build fails

I'm having trouble building the llvmTools. I use llvm version 9. Error trace is below.

jev@jev:~/foivos/build$ make
Scanning dependencies of target hello
[ 10%] Building CXX object hello/CMakeFiles/hello.dir/hello.cpp.o
[ 20%] Linking CXX shared module libhello.so
[ 20%] Built target hello
Scanning dependencies of target BasicTechniques
[ 30%] Building CXX object BasicTechniques/CMakeFiles/BasicTechniques.dir/basicTechniques.cpp.o
[ 40%] Linking CXX shared module libBasicTechniques.so
[ 40%] Built target BasicTechniques
Scanning dependencies of target RuntimeRecorder
[ 50%] Building CXX object RuntimeRecorder/CMakeFiles/RuntimeRecorder.dir/RuntimeRecorder.cpp.o
[ 60%] Linking CXX shared module libRuntimeRecorder.so
[ 60%] Built target RuntimeRecorder
Scanning dependencies of target RuntimeTypeLib
[ 70%] Building CXX object RuntimeRecorder/RuntimeTypeLib/CMakeFiles/RuntimeTypeLib.dir/valueRecorder.cpp.o
In file included from /home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/function_call.h:1:0,
from /home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/valueRecorder.cpp:4:
/home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/ir_type.h:185:7: error: using typedef-name ‘float_t’ after ‘class’
class float_t : public ir_type{
^
In file included from /usr/include/math.h:45:0,
from /usr/include/c++/4.8/cmath:44,
from /usr/include/c++/4.8/random:38,
from /usr/include/c++/4.8/bits/stl_algo.h:65,
from /usr/include/c++/4.8/algorithm:62,
from /home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/ir_type.h:4,
from /home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/function_call.h:1,
from /home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/valueRecorder.cpp:4:
/usr/include/x86_64-linux-gnu/bits/mathdef.h:28:15: note: ‘float_t’ has a previous declaration here
typedef float float_t; /* float' expressions are evaluated as float'. /
^
In file included from /home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/function_call.h:1:0,
from /home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/valueRecorder.cpp:4:
/home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/ir_type.h:199:7: error: using typedef-name ‘double_t’ after ‘class’
class double_t : public ir_type{
^
In file included from /usr/include/math.h:45:0,
from /usr/include/c++/4.8/cmath:44,
from /usr/include/c++/4.8/random:38,
from /usr/include/c++/4.8/bits/stl_algo.h:65,
from /usr/include/c++/4.8/algorithm:62,
from /home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/ir_type.h:4,
from /home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/function_call.h:1,
from /home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/valueRecorder.cpp:4:
/usr/include/x86_64-linux-gnu/bits/mathdef.h:29:16: note: ‘double_t’ has a previous declaration here
typedef double double_t; /
`double' expressions are evaluated
^
/home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/valueRecorder.cpp: In function ‘void update_float(float, unsigned int, unsigned int)’:
/home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/valueRecorder.cpp:278:51: error: no matching function for call to ‘std::vector<ir_type*>::push_back(float_t*)’
global_variables.push_back(new float_t(value));
^
/home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/valueRecorder.cpp:278:51: note: candidates are:
In file included from /usr/include/c++/4.8/vector:64:0,
from /usr/include/c++/4.8/bits/random.h:34,
from /usr/include/c++/4.8/random:50,
from /usr/include/c++/4.8/bits/stl_algo.h:65,
from /usr/include/c++/4.8/algorithm:62,
from /home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/ir_type.h:4,
from /home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/function_call.h:1,
from /home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/valueRecorder.cpp:4:
/usr/include/c++/4.8/bits/stl_vector.h:901:7: note: void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = ir_type*; _Alloc = std::allocator<ir_type*>; std::vector<_Tp, _Alloc>::value_type = ir_type*]
push_back(const value_type& __x)
^
/usr/include/c++/4.8/bits/stl_vector.h:901:7: note: no known conversion for argument 1 from ‘float_t* {aka float*}’ to ‘ir_type* const&’
/usr/include/c++/4.8/bits/stl_vector.h:919:7: note: void std::vector<_Tp, _Alloc>::push_back(std::vector<_Tp, _Alloc>::value_type&&) [with _Tp = ir_type*; _Alloc = std::allocator<ir_type*>; std::vector<_Tp, _Alloc>::value_type = ir_type*]
push_back(value_type&& __x)
^
/usr/include/c++/4.8/bits/stl_vector.h:919:7: note: no known conversion for argument 1 from ‘float_t* {aka float*}’ to ‘ir_type*&&’
/home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/valueRecorder.cpp:280:36: error: cannot convert ‘float_t* {aka float*}’ to ‘ir_type*’ in initialization
ir_type f = new float_t(value);
^
/home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/valueRecorder.cpp:285:56: error: no matching function for call to ‘function_call::set_ret_value(float_t
)’
func_calls[index]->set_ret_value(new float_t(value));
^
/home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/valueRecorder.cpp:285:56: note: candidate is:
In file included from /home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/valueRecorder.cpp:4:0:
/home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/function_call.h:9:15: note: virtual void function_call::set_ret_value(ir_type*)
virtual void set_ret_value(ir_type* ret) = 0;
^
/home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/function_call.h:9:15: note: no known conversion for argument 1 from ‘float_t* {aka float*}’ to ‘ir_type*’
/home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/valueRecorder.cpp:288:56: error: no matching function for call to ‘function_call::set_arg_value(float_t*)’
func_calls[index]->set_arg_value(new float_t(value));
^
/home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/valueRecorder.cpp:288:56: note: candidate is:
In file included from /home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/valueRecorder.cpp:4:0:
/home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/function_call.h:10:15: note: virtual void function_call::set_arg_value(ir_type*)
virtual void set_arg_value(ir_type* ret){ (void) ret; }
^
/home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/function_call.h:10:15: note: no known conversion for argument 1 from ‘float_t* {aka float*}’ to ‘ir_type*’
/home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/valueRecorder.cpp: In function ‘void update_double(double, unsigned int, unsigned int)’:
/home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/valueRecorder.cpp:305:52: error: no matching function for call to ‘std::vector<ir_type*>::push_back(double_t*)’
global_variables.push_back(new double_t(value));
^
/home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/valueRecorder.cpp:305:52: note: candidates are:
In file included from /usr/include/c++/4.8/vector:64:0,
from /usr/include/c++/4.8/bits/random.h:34,
from /usr/include/c++/4.8/random:50,
from /usr/include/c++/4.8/bits/stl_algo.h:65,
from /usr/include/c++/4.8/algorithm:62,
from /home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/ir_type.h:4,
from /home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/function_call.h:1,
from /home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/valueRecorder.cpp:4:
/usr/include/c++/4.8/bits/stl_vector.h:901:7: note: void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = ir_type*; _Alloc = std::allocator<ir_type*>; std::vector<_Tp, _Alloc>::value_type = ir_type*]
push_back(const value_type& __x)
^
/usr/include/c++/4.8/bits/stl_vector.h:901:7: note: no known conversion for argument 1 from ‘double_t* {aka double*}’ to ‘ir_type* const&’
/usr/include/c++/4.8/bits/stl_vector.h:919:7: note: void std::vector<_Tp, _Alloc>::push_back(std::vector<_Tp, _Alloc>::value_type&&) [with _Tp = ir_type*; _Alloc = std::allocator<ir_type*>; std::vector<_Tp, _Alloc>::value_type = ir_type*]
push_back(value_type&& __x)
^
/usr/include/c++/4.8/bits/stl_vector.h:919:7: note: no known conversion for argument 1 from ‘double_t* {aka double*}’ to ‘ir_type*&&’
/home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/valueRecorder.cpp:307:37: error: cannot convert ‘double_t* {aka double*}’ to ‘ir_type*’ in initialization
ir_type d = new double_t(value);
^
/home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/valueRecorder.cpp:312:57: error: no matching function for call to ‘function_call::set_ret_value(double_t
)’
func_calls[index]->set_ret_value(new double_t(value));
^
/home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/valueRecorder.cpp:312:57: note: candidate is:
In file included from /home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/valueRecorder.cpp:4:0:
/home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/function_call.h:9:15: note: virtual void function_call::set_ret_value(ir_type*)
virtual void set_ret_value(ir_type* ret) = 0;
^
/home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/function_call.h:9:15: note: no known conversion for argument 1 from ‘double_t* {aka double*}’ to ‘ir_type*’
/home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/valueRecorder.cpp:315:57: error: no matching function for call to ‘function_call::set_arg_value(double_t*)’
func_calls[index]->set_arg_value(new double_t(value));
^
/home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/valueRecorder.cpp:315:57: note: candidate is:
In file included from /home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/valueRecorder.cpp:4:0:
/home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/function_call.h:10:15: note: virtual void function_call::set_arg_value(ir_type*)
virtual void set_arg_value(ir_type* ret){ (void) ret; }
^
/home/jev/foivos/llvmTools/RuntimeRecorder/RuntimeTypeLib/function_call.h:10:15: note: no known conversion for argument 1 from ‘double_t* {aka double*}’ to ‘ir_type*’
make[2]: *** [RuntimeRecorder/RuntimeTypeLib/CMakeFiles/RuntimeTypeLib.dir/valueRecorder.cpp.o] Error 1
make[1]: *** [RuntimeRecorder/RuntimeTypeLib/CMakeFiles/RuntimeTypeLib.dir/all] Error 2
make: *** [all] Error 2

Removed TerminatorInst

TerminatorInst was removed in the newer version of LLVM: http://lists.llvm.org/pipermail/llvm-dev/2018-May/123407.html

Error stack:
`[lute]s1652379: make

Scanning dependencies of target Test_dummy_pass
[ 8%] Building CXX object Test_Dummy_pass/CMakeFiles/Test_dummy_pass.dir/test_pass.cpp.o
[ 16%] Linking CXX shared module libTest_dummy_pass.so
[ 16%] Built target Test_dummy_pass
Scanning dependencies of target Basic_techniques
[ 25%] Building CXX object Basic_Techniques/CMakeFiles/Basic_techniques.dir/basic_techniques.cpp.o
[ 33%] Linking CXX shared module libBasic_techniques.so
[ 33%] Built target Basic_techniques
Scanning dependencies of target Runtime_func_trace_postorder
[ 41%] Building CXX object Function_call_recorder/CMakeFiles/Runtime_func_trace_postorder.dir/func_call_rec_postorder.cpp.o
/afs/inf.ed.ac.uk/user/s16/s1652379/foivosLlvm/llvmTools/Function_call_recorder/func_call_rec_postorder.cpp: In member function ‘void {anonymous}::Func_call::parse_value(llvm::Value*, llvm::Value*&, llvm::Type*&, llvm::Instruction*, unsigned int, llvm::Module&, llvm::LLVMContext&)’:
/afs/inf.ed.ac.uk/user/s16/s1652379/foivosLlvm/llvmTools/Function_call_recorder/func_call_rec_postorder.cpp:108:13: error: ‘TerminatorInst’ was not declared in this scope
TerminatorInst if_term, else_term;
^
/afs/inf.ed.ac.uk/user/s16/s1652379/foivosLlvm/llvmTools/Function_call_recorder/func_call_rec_postorder.cpp:108:29: error: ‘if_term’ was not declared in this scope
TerminatorInst if_term, else_term;
^
/afs/inf.ed.ac.uk/user/s16/s1652379/foivosLlvm/llvmTools/Function_call_recorder/func_call_rec_postorder.cpp:108:39: error: ‘else_term’ was not declared in this scope
TerminatorInst if_term, else_term;
^
/afs/inf.ed.ac.uk/user/s16/s1652379/foivosLlvm/llvmTools/Function_call_recorder/func_call_rec_postorder.cpp: In member function ‘void {anonymous}::Func_call::declare_extern_funcs(llvm::Module&, llvm::LLVMContext&)’:
/afs/inf.ed.ac.uk/user/s16/s1652379/foivosLlvm/llvmTools/Function_call_recorder/func_call_rec_postorder.cpp:326:21: error: cannot convert ‘llvm::FunctionCallee’ to ‘llvm::Constant
’ in assignment
print_trace = M.getOrInsertFunction("_Z11print_tracev", Type::getVoidTy(module_context));
^
/afs/inf.ed.ac.uk/user/s16/s1652379/foivosLlvm/llvmTools/Function_call_recorder/func_call_rec_postorder.cpp:329:21: error: cannot convert ‘llvm::FunctionCallee’ to ‘llvm::Constant
’ in assignment
record_call = M.getOrInsertFunction("Z11record_callPKcS0", Type::getInt32Ty(module_context), Type::getInt8PtrTy(module_context), Type::getInt8PtrTy(module_context));
^
/afs/inf.ed.ac.uk/user/s16/s1652379/foivosLlvm/llvmTools/Function_call_recorder/func_call_rec_postorder.cpp:330:23: error: cannot convert ‘llvm::FunctionCallee’ to ‘llvm::Constant
’ in assignment
record_invoke = M.getOrInsertFunction("Z13record_invokePKcS0", Type::getInt32Ty(module_context), Type::getInt8PtrTy(module_context), Type::getInt8PtrTy(module_context));
^
/afs/inf.ed.ac.uk/user/s16/s1652379/foivosLlvm/llvmTools/Function_call_recorder/func_call_rec_postorder.cpp:331:27: error: cannot convert ‘llvm::FunctionCallee’ to ‘llvm::Constant
’ in assignment
record_exit_point = M.getOrInsertFunction("Z17record_exit_pointPKcS0", Type::getInt32Ty(module_context), Type::getInt8PtrTy(module_context), Type::getInt8PtrTy(module_context));
^
/afs/inf.ed.ac.uk/user/s16/s1652379/foivosLlvm/llvmTools/Function_call_recorder/func_call_rec_postorder.cpp:333:21: error: cannot convert ‘llvm::FunctionCallee’ to ‘llvm::Constant
’ in assignment
update_void = M.getOrInsertFunction("_Z11update_voidjj", Type::getVoidTy(module_context), Type::getInt32Ty(module_context), Type::getInt32Ty(module_context));
^
/afs/inf.ed.ac.uk/user/s16/s1652379/foivosLlvm/llvmTools/Function_call_recorder/func_call_rec_postorder.cpp:334:18: error: cannot convert ‘llvm::FunctionCallee’ to ‘llvm::Constant
’ in assignment
update_1 = M.getOrInsertFunction("_Z8update_1bjj", Type::getVoidTy(module_context), Type::getInt1Ty(module_context), Type::getInt32Ty(module_context), Type::getInt32Ty(module_context));
^
/afs/inf.ed.ac.uk/user/s16/s1652379/foivosLlvm/llvmTools/Function_call_recorder/func_call_rec_postorder.cpp:335:18: error: cannot convert ‘llvm::FunctionCallee’ to ‘llvm::Constant*’ in assignment
update_8 = M.getOrInsertFunction("_Z8update_8hjj", Type::getVoidTy(module_context), Type::getInt8Ty(module_context), Type::getInt32Ty(module_context), Type::getInt32Ty(module_context));
^
/afs/inf.ed.ac.uk/user/s16/s1652379/foivosLlvm/llvmTools/Function_call_recorder/func_call_rec_postorder.cpp:336:19: error: cannot convert ‘llvm::FunctionCallee’ to ‘llvm::Constant*’ in assignment
update_16 = M.getOrInsertFunction("_Z9update_16tjj", Type::getVoidTy(module_context), Type::getInt16Ty(module_context), Type::getInt32Ty(module_context), Type::getInt32Ty(module_context));
^
/afs/inf.ed.ac.uk/user/s16/s1652379/foivosLlvm/llvmTools/Function_call_recorder/func_call_rec_postorder.cpp:337:19: error: cannot convert ‘llvm::FunctionCallee’ to ‘llvm::Constant*’ in assignment
update_32 = M.getOrInsertFunction("_Z9update_32jjj", Type::getVoidTy(module_context), Type::getInt32Ty(module_context), Type::getInt32Ty(module_context), Type::getInt32Ty(module_context));
^
/afs/inf.ed.ac.uk/user/s16/s1652379/foivosLlvm/llvmTools/Function_call_recorder/func_call_rec_postorder.cpp:338:19: error: cannot convert ‘llvm::FunctionCallee’ to ‘llvm::Constant*’ in assignment
update_64 = M.getOrInsertFunction("_Z9update_64mjj", Type::getVoidTy(module_context), Type::getInt64Ty(module_context), Type::getInt32Ty(module_context), Type::getInt32Ty(module_context));
^
/afs/inf.ed.ac.uk/user/s16/s1652379/foivosLlvm/llvmTools/Function_call_recorder/func_call_rec_postorder.cpp:339:20: error: cannot convert ‘llvm::FunctionCallee’ to ‘llvm::Constant*’ in assignment
update_128 = M.getOrInsertFunction("_Z10update_128ojj", Type::getVoidTy(module_context), Type::getInt128Ty(module_context), Type::getInt32Ty(module_context), Type::getInt32Ty(module_context));
^
/afs/inf.ed.ac.uk/user/s16/s1652379/foivosLlvm/llvmTools/Function_call_recorder/func_call_rec_postorder.cpp:340:22: error: cannot convert ‘llvm::FunctionCallee’ to ‘llvm::Constant*’ in assignment
update_float = M.getOrInsertFunction("_Z12update_floatfjj", Type::getVoidTy(module_context), Type::getFloatTy(module_context), Type::getInt32Ty(module_context), Type::getInt32Ty(module_context));
^
/afs/inf.ed.ac.uk/user/s16/s1652379/foivosLlvm/llvmTools/Function_call_recorder/func_call_rec_postorder.cpp:341:23: error: cannot convert ‘llvm::FunctionCallee’ to ‘llvm::Constant*’ in assignment
update_double = M.getOrInsertFunction("_Z13update_doubledjj", Type::getVoidTy(module_context), Type::getDoubleTy(module_context), Type::getInt32Ty(module_context), Type::getInt32Ty(module_context));
^
/afs/inf.ed.ac.uk/user/s16/s1652379/foivosLlvm/llvmTools/Function_call_recorder/func_call_rec_postorder.cpp:342:20: error: cannot convert ‘llvm::FunctionCallee’ to ‘llvm::Constant*’ in assignment
update_ptr = M.getOrInsertFunction("_Z10update_ptrmjj", Type::getVoidTy(module_context), Type::getInt64Ty(module_context), Type::getInt32Ty(module_context), Type::getInt32Ty(module_context));
^
/afs/inf.ed.ac.uk/user/s16/s1652379/foivosLlvm/llvmTools/Function_call_recorder/func_call_rec_postorder.cpp:343:22: error: cannot convert ‘llvm::FunctionCallee’ to ‘llvm::Constant*’ in assignment
update_array = M.getOrInsertFunction("_Z12update_arraymjj", Type::getVoidTy(module_context), Type::getInt64Ty(module_context), Type::getInt32Ty(module_context), Type::getInt32Ty(module_context));
^
/afs/inf.ed.ac.uk/user/s16/s1652379/foivosLlvm/llvmTools/Function_call_recorder/func_call_rec_postorder.cpp:344:23: error: cannot convert ‘llvm::FunctionCallee’ to ‘llvm::Constant*’ in assignment
update_struct = M.getOrInsertFunction("_Z13update_structPKcmjj", Type::getVoidTy(module_context), Type::getInt8PtrTy(module_context), Type::getInt64Ty(module_context), Type::getInt32Ty(module_context), Type::getInt32Ty(module_context));
^
/afs/inf.ed.ac.uk/user/s16/s1652379/foivosLlvm/llvmTools/Function_call_recorder/func_call_rec_postorder.cpp:345:26: error: cannot convert ‘llvm::FunctionCallee’ to ‘llvm::Constant*’ in assignment
update_exception = M.getOrInsertFunction("_Z16update_exceptionj", Type::getVoidTy(module_context), Type::getInt32Ty(module_context));
^
/afs/inf.ed.ac.uk/user/s16/s1652379/foivosLlvm/llvmTools/Function_call_recorder/func_call_rec_postorder.cpp:346:26: error: cannot convert ‘llvm::FunctionCallee’ to ‘llvm::Constant*’ in assignment
update_undefined = M.getOrInsertFunction("_Z16update_undefinedPKcjj", Type::getVoidTy(module_context), Type::getInt8PtrTy(module_context), Type::getInt32Ty(module_context), Type::getInt32Ty(module_context));
^
/afs/inf.ed.ac.uk/user/s16/s1652379/foivosLlvm/llvmTools/Function_call_recorder/func_call_rec_postorder.cpp:347:28: error: cannot convert ‘llvm::FunctionCallee’ to ‘llvm::Constant*’ in assignment
update_unallocated = M.getOrInsertFunction("_Z11update_unallocatedjj", Type::getVoidTy(module_context), Type::getInt32Ty(module_context), Type::getInt32Ty(module_context));
^
make[2]: *** [Function_call_recorder/CMakeFiles/Runtime_func_trace_postorder.dir/func_call_rec_postorder.cpp.o] Error 1
make[1]: *** [Function_call_recorder/CMakeFiles/Runtime_func_trace_postorder.dir/all] Error 2
make: *** [all] Error 2`

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.