wsong83 / cpptcl Goto Github PK
View Code? Open in Web Editor NEWC++/Tcl, a library that allows to easily integrate C++ and Tcl.
License: Other
C++/Tcl, a library that allows to easily integrate C++ and Tcl.
License: Other
/tmp/ccDeR3P5.o: In function Tcl::details::result::operator bool() const': cpptcl.cc:(.text+0x34): undefined reference to
Tcl_GetObjResult'
cpptcl.cc:(.text+0x52): undefined reference to Tcl_GetBooleanFromObj' /tmp/ccDeR3P5.o: In function
Tcl::details::result::operator double() const':
cpptcl.cc:(.text+0xde): undefined reference to Tcl_GetObjResult' cpptcl.cc:(.text+0xfc): undefined reference to
Tcl_GetDoubleFromObj'
/tmp/ccDeR3P5.o: In function Tcl::details::result::operator int() const': cpptcl.cc:(.text+0x18c): undefined reference to
Tcl_GetObjResult'
cpptcl.cc:(.text+0x1aa): undefined reference to Tcl_GetIntFromObj' /tmp/ccDeR3P5.o: In function
Tcl::details::result::operator long() const':
cpptcl.cc:(.text+0x230): undefined reference to Tcl_GetObjResult' cpptcl.cc:(.text+0x24e): undefined reference to
Tcl_GetLongFromObj'
/tmp/ccDeR3P5.o: In function Tcl::details::result::operator long long() const': cpptcl.cc:(.text+0x2d6): undefined reference to
Tcl_GetObjResult'
cpptcl.cc:(.text+0x2f4): undefined reference to Tcl_GetWideIntFromObj' /tmp/ccDeR3P5.o: In function
Tcl::details::result::operator std::string() const':
cpptcl.cc:(.text+0x37e): undefined reference to Tcl_GetObjResult' cpptcl.cc:(.text+0x39a): undefined reference to
Tcl_GetString'
/tmp/ccDeR3P5.o: In function Tcl::details::result::operator Tcl::object() const': cpptcl.cc:(.text+0x403): undefined reference to
Tcl_GetObjResult'
/tmp/ccDeR3P5.o: In function Tcl::details::set_result(Tcl_Interp*, bool)': cpptcl.cc:(.text+0x43c): undefined reference to
Tcl_NewIntObj'
cpptcl.cc:(.text+0x44e): undefined reference to Tcl_SetObjResult' /tmp/ccDeR3P5.o: In function
Tcl::details::set_result(Tcl_Interp*, int)':
cpptcl.cc:(.text+0x469): undefined reference to Tcl_NewIntObj' cpptcl.cc:(.text+0x47b): undefined reference to
Tcl_SetObjResult'
/tmp/ccDeR3P5.o: In function Tcl::details::set_result(Tcl_Interp*, long)': cpptcl.cc:(.text+0x499): undefined reference to
Tcl_NewLongObj'
cpptcl.cc:(.text+0x4ab): undefined reference to Tcl_SetObjResult' /tmp/ccDeR3P5.o: In function
Tcl::details::set_result(Tcl_Interp*, long long)':
cpptcl.cc:(.text+0x4c9): undefined reference to Tcl_NewWideIntObj' cpptcl.cc:(.text+0x4db): undefined reference to
Tcl_SetObjResult'
/tmp/ccDeR3P5.o: In function Tcl::details::set_result(Tcl_Interp*, double)': cpptcl.cc:(.text+0x500): undefined reference to
Tcl_NewDoubleObj'
cpptcl.cc:(.text+0x512): undefined reference to Tcl_SetObjResult' /tmp/ccDeR3P5.o: In function
Tcl::details::set_result(Tcl_Interp*, std::string const&)':
cpptcl.cc:(.text+0x549): undefined reference to Tcl_NewStringObj' cpptcl.cc:(.text+0x55b): undefined reference to
Tcl_SetObjResult'
/tmp/ccDeR3P5.o: In function Tcl::details::set_result(Tcl_Interp*, void*)': cpptcl.cc:(.text+0x5f0): undefined reference to
Tcl_NewStringObj'
cpptcl.cc:(.text+0x605): undefined reference to Tcl_SetObjResult' /tmp/ccDeR3P5.o: In function
Tcl::details::set_result(Tcl_Interp*, Tcl::object const&)':
cpptcl.cc:(.text+0x688): undefined reference to Tcl_SetObjResult' /tmp/ccDeR3P5.o: In function
(anonymous namespace)::post_process_policies(Tcl_Interp*, Tcl::policies&, Tcl_Obj* const*, bool)':
cpptcl.cc:(.text+0xb3e): undefined reference to Tcl_GetObjResult' cpptcl.cc:(.text+0xb46): undefined reference to
Tcl_GetString'
cpptcl.cc:(.text+0xb6c): undefined reference to Tcl_CreateObjCommand' cpptcl.cc:(.text+0xbcf): undefined reference to
Tcl_GetString'
cpptcl.cc:(.text+0xbe4): undefined reference to Tcl_DeleteCommand' cpptcl.cc:(.text+0xc1f): undefined reference to
Tcl_GetString'
cpptcl.cc:(.text+0xc34): undefined reference to Tcl_DeleteCommand' /tmp/ccDeR3P5.o: In function
callback_handler':
cpptcl.cc:(.text+0xe0f): undefined reference to Tcl_SetResult' cpptcl.cc:(.text+0xe37): undefined reference to
Tcl_GetString'
cpptcl.cc:(.text+0xf4f): undefined reference to Tcl_SetResult' cpptcl.cc:(.text+0x1054): undefined reference to
Tcl_SetResult'
cpptcl.cc:(.text+0x1120): undefined reference to Tcl_SetResult' cpptcl.cc:(.text+0x1222): undefined reference to
Tcl_SetResult'
cpptcl.cc:(.text+0x127f): undefined reference to Tcl_SetResult' /tmp/ccDeR3P5.o: In function
object_handler':
cpptcl.cc:(.text+0x16e3): undefined reference to Tcl_GetString' cpptcl.cc:(.text+0x1767): undefined reference to
Tcl_GetString'
cpptcl.cc:(.text+0x18b1): undefined reference to Tcl_SetResult' cpptcl.cc:(.text+0x1902): undefined reference to
Tcl_SetResult'
/tmp/ccDeR3P5.o: In function constructor_handler': cpptcl.cc:(.text+0x1a95): undefined reference to
Tcl_SetResult'
cpptcl.cc:(.text+0x1abd): undefined reference to Tcl_GetString' cpptcl.cc:(.text+0x1bde): undefined reference to
Tcl_SetResult'
cpptcl.cc:(.text+0x1ca4): undefined reference to Tcl_SetResult' cpptcl.cc:(.text+0x1d1e): undefined reference to
Tcl_GetObjResult'
cpptcl.cc:(.text+0x1d26): undefined reference to Tcl_GetString' cpptcl.cc:(.text+0x1d4c): undefined reference to
Tcl_CreateObjCommand'
cpptcl.cc:(.text+0x1dc1): undefined reference to Tcl_SetResult' cpptcl.cc:(.text+0x1e1e): undefined reference to
Tcl_SetResult'
/tmp/ccDeR3P5.o: In function Tcl::object::object()': cpptcl.cc:(.text+0x22dd): undefined reference to
Tcl_NewObj'
/tmp/ccDeR3P5.o: In function Tcl::object::object(bool)': cpptcl.cc:(.text+0x231c): undefined reference to
Tcl_NewIntObj'
/tmp/ccDeR3P5.o: In function Tcl::object::object(char const*, unsigned long)': cpptcl.cc:(.text+0x2368): undefined reference to
Tcl_NewByteArrayObj'
/tmp/ccDeR3P5.o: In function Tcl::object::object(double)': cpptcl.cc:(.text+0x23af): undefined reference to
Tcl_NewDoubleObj'
/tmp/ccDeR3P5.o: In function Tcl::object::object(int)': cpptcl.cc:(.text+0x23eb): undefined reference to
Tcl_NewIntObj'
/tmp/ccDeR3P5.o: In function Tcl::object::object(long)': cpptcl.cc:(.text+0x242a): undefined reference to
Tcl_NewLongObj'
/tmp/ccDeR3P5.o: In function Tcl::object::object(long long)': cpptcl.cc:(.text+0x246a): undefined reference to
Tcl_NewWideIntObj'
/tmp/ccDeR3P5.o: In function Tcl::object::object(char const*)': cpptcl.cc:(.text+0x24af): undefined reference to
Tcl_NewStringObj'
/tmp/ccDeR3P5.o: In function Tcl::object::object(std::string const&)': cpptcl.cc:(.text+0x2507): undefined reference to
Tcl_NewStringObj'
/tmp/ccDeR3P5.o: In function Tcl::object::object(std::vector<std::string, std::allocator<std::string> > const&)': cpptcl.cc:(.text+0x25c0): undefined reference to
Tcl_NewStringObj'
cpptcl.cc:(.text+0x2621): undefined reference to Tcl_NewListObj' /tmp/ccDeR3P5.o: In function
Tcl::object::init(Tcl_Obj*, bool)':
cpptcl.cc:(.text+0x2734): undefined reference to Tcl_DuplicateObj' /tmp/ccDeR3P5.o: In function
Tcl::object::~object()':
cpptcl.cc:(.text+0x2788): undefined reference to TclFreeObj' /tmp/ccDeR3P5.o: In function
Tcl::object::assign(bool)':
cpptcl.cc:(.text+0x27b0): undefined reference to Tcl_SetIntObj' /tmp/ccDeR3P5.o: In function
Tcl::object::resize(unsigned long)':
cpptcl.cc:(.text+0x27dd): undefined reference to Tcl_SetByteArrayLength' /tmp/ccDeR3P5.o: In function
Tcl::object::assign(char const*, unsigned long)':
cpptcl.cc:(.text+0x2814): undefined reference to Tcl_SetByteArrayObj' /tmp/ccDeR3P5.o: In function
Tcl::object::assign(double)':
cpptcl.cc:(.text+0x2847): undefined reference to Tcl_SetDoubleObj' /tmp/ccDeR3P5.o: In function
Tcl::object::assign(int)':
cpptcl.cc:(.text+0x2871): undefined reference to Tcl_SetIntObj' /tmp/ccDeR3P5.o: In function
Tcl::object::assign(long)':
cpptcl.cc:(.text+0x289e): undefined reference to Tcl_SetLongObj' /tmp/ccDeR3P5.o: In function
Tcl::object::assign(long long)':
cpptcl.cc:(.text+0x28ca): undefined reference to Tcl_SetWideIntObj' /tmp/ccDeR3P5.o: In function
Tcl::object::assign(char const*)':
cpptcl.cc:(.text+0x28fb): undefined reference to Tcl_SetStringObj' /tmp/ccDeR3P5.o: In function
Tcl::object::assign(std::string const&)':
cpptcl.cc:(.text+0x2944): undefined reference to Tcl_SetStringObj' /tmp/ccDeR3P5.o: In function
bool Tcl::object::get(Tcl::interpreter&) const':
cpptcl.cc:(.text+0x2b13): undefined reference to Tcl_GetBooleanFromObj' /tmp/ccDeR3P5.o: In function
double Tcl::object::get(Tcl::interpreter&) const':
cpptcl.cc:(.text+0x2c4d): undefined reference to Tcl_GetDoubleFromObj' /tmp/ccDeR3P5.o: In function
int Tcl::object::get(Tcl::interpreter&) const':
cpptcl.cc:(.text+0x2cf9): undefined reference to Tcl_GetIntFromObj' /tmp/ccDeR3P5.o: In function
long Tcl::object::get(Tcl::interpreter&) const':
cpptcl.cc:(.text+0x2d9b): undefined reference to Tcl_GetLongFromObj' /tmp/ccDeR3P5.o: In function
long long Tcl::object::get(Tcl::interpreter&) const':
cpptcl.cc:(.text+0x2e3f): undefined reference to Tcl_GetWideIntFromObj' /tmp/ccDeR3P5.o: In function
std::vector<std::string, std::allocatorstd::string > Tcl::object::get<std::vector<std::string, std::allocatorstd::string > >(Tcl::interpreter&) const':
cpptcl.cc:(.text+0x2f33): undefined reference to Tcl_ListObjLength' cpptcl.cc:(.text+0x2fde): undefined reference to
Tcl_ListObjIndex'
cpptcl.cc:(.text+0x2ff6): undefined reference to Tcl_GetString' /tmp/ccDeR3P5.o: In function
Tcl::object::get_string() const':
cpptcl.cc:(.text+0x30fb): undefined reference to Tcl_GetStringFromObj' /tmp/ccDeR3P5.o: In function
Tcl::object::get() const':
cpptcl.cc:(.text+0x3181): undefined reference to Tcl_GetString' /tmp/ccDeR3P5.o: In function
Tcl::object::get(unsigned long&) const':
cpptcl.cc:(.text+0x31aa): undefined reference to Tcl_GetByteArrayFromObj' /tmp/ccDeR3P5.o: In function
Tcl::object::length(Tcl::interpreter&) const':
cpptcl.cc:(.text+0x31f7): undefined reference to Tcl_ListObjLength' /tmp/ccDeR3P5.o: In function
Tcl::object::at(Tcl::interpreter&, unsigned long) const':
cpptcl.cc:(.text+0x32b0): undefined reference to Tcl_ListObjIndex' /tmp/ccDeR3P5.o: In function
Tcl::object::append(Tcl::interpreter&, Tcl::object const&)':
cpptcl.cc:(.text+0x3425): undefined reference to Tcl_ListObjAppendElement' /tmp/ccDeR3P5.o: In function
Tcl::object::append_list(Tcl::interpreter&, Tcl::object const&)':
cpptcl.cc:(.text+0x34d3): undefined reference to Tcl_ListObjAppendList' /tmp/ccDeR3P5.o: In function
Tcl::object::replace(Tcl::interpreter&, unsigned long, unsigned long, Tcl::object const&)':
cpptcl.cc:(.text+0x35a4): undefined reference to Tcl_ListObjReplace' /tmp/ccDeR3P5.o: In function
Tcl::object::replace_list(Tcl::interpreter&, unsigned long, unsigned long, Tcl::object const&)':
cpptcl.cc:(.text+0x3661): undefined reference to Tcl_ListObjGetElements' cpptcl.cc:(.text+0x36ea): undefined reference to
Tcl_ListObjReplace'
/tmp/ccDeR3P5.o: In function Tcl::interpreter::interpreter()': cpptcl.cc:(.text+0x37dc): undefined reference to
Tcl_CreateInterp'
/tmp/ccDeR3P5.o: In function Tcl::interpreter::~interpreter()': cpptcl.cc:(.text+0x38b2): undefined reference to
Tcl_DeleteInterp'
/tmp/ccDeR3P5.o: In function Tcl::interpreter::make_safe()': cpptcl.cc:(.text+0x391f): undefined reference to
Tcl_MakeSafe'
/tmp/ccDeR3P5.o: In function Tcl::interpreter::tcl_init()': cpptcl.cc:(.text+0x39a3): undefined reference to
Tcl_Init'
/tmp/ccDeR3P5.o: In function Tcl::interpreter::eval(std::string const&)': cpptcl.cc:(.text+0x3a95): undefined reference to
Tcl_Eval'
/tmp/ccDeR3P5.o: In function Tcl::interpreter::eval(Tcl::object const&)': cpptcl.cc:(.text+0x3c40): undefined reference to
Tcl_EvalObjEx'
/tmp/ccDeR3P5.o: In function Tcl::interpreter::pkg_provide(std::string const&, std::string const&)': cpptcl.cc:(.text+0x3d0f): undefined reference to
Tcl_PkgProvideEx'
/tmp/ccDeR3P5.o: In function Tcl::interpreter::create_alias(std::string const&, Tcl::interpreter&, std::string const&)': cpptcl.cc:(.text+0x3dd7): undefined reference to
Tcl_CreateAlias'
/tmp/ccDeR3P5.o: In function Tcl::interpreter::clear_definitions(Tcl_Interp*)': cpptcl.cc:(.text+0x3efc): undefined reference to
Tcl_DeleteCommand'
cpptcl.cc:(.text+0x41d4): undefined reference to Tcl_UntraceVar2' cpptcl.cc:(.text+0x423d): undefined reference to
Tcl_UntraceVar2'
cpptcl.cc:(.text+0x4481): undefined reference to Tcl_UntraceVar2' cpptcl.cc:(.text+0x44fa): undefined reference to
Tcl_UntraceVar2'
cpptcl.cc:(.text+0x46a3): undefined reference to Tcl_DeleteCommand' /tmp/ccDeR3P5.o: In function
Tcl::interpreter::add_function(std::string const&, boost::shared_ptrTcl::details::callback_base, Tcl::policies const&, void*)':
cpptcl.cc:(.text+0x4842): undefined reference to Tcl_CreateObjCommand' /tmp/ccDeR3P5.o: In function
Tcl::interpreter::add_trace(std::string const&, unsigned int*, std::string const&, boost::shared_ptrTcl::details::trace_base, void*, int)':
cpptcl.cc:(.text+0x4b22): undefined reference to Tcl_TraceVar2' cpptcl.cc:(.text+0x4b87): undefined reference to
Tcl_TraceVar2'
/tmp/ccDeR3P5.o: In function Tcl::interpreter::remove_trace(std::string const&, unsigned int*, std::string const&, int)': cpptcl.cc:(.text+0x4ee3): undefined reference to
Tcl_UntraceVar2'
cpptcl.cc:(.text+0x4f5a): undefined reference to Tcl_UntraceVar2' cpptcl.cc:(.text+0x4fe6): undefined reference to
Tcl_UntraceVar2'
cpptcl.cc:(.text+0x506d): undefined reference to Tcl_UntraceVar2' cpptcl.cc:(.text+0x52c2): undefined reference to
Tcl_UntraceVar2'
/tmp/ccDeR3P5.o:cpptcl.cc:(.text+0x5355): more undefined references to Tcl_UntraceVar2' follow /tmp/ccDeR3P5.o: In function
Tcl::interpreter::add_constructor(std::string const&, boost::shared_ptrTcl::details::class_handler_base, boost::shared_ptrTcl::details::callback_base, Tcl::policies const&)':
cpptcl.cc:(.text+0x56d4): undefined reference to Tcl_CreateObjCommand' /tmp/ccDeR3P5.o: In function
Tcl::details::tcl_cast::from(Tcl_Interp*, Tcl_Obj*)':
cpptcl.cc:(.text+0x579a): undefined reference to Tcl_GetIntFromObj' /tmp/ccDeR3P5.o: In function
Tcl::details::tcl_cast::to(Tcl_Interp*, int const&)':
cpptcl.cc:(.text+0x581d): undefined reference to Tcl_NewIntObj' /tmp/ccDeR3P5.o: In function
Tcl::details::tcl_cast::from(Tcl_Interp*, Tcl_Obj*)':
cpptcl.cc:(.text+0x584a): undefined reference to Tcl_GetLongFromObj' /tmp/ccDeR3P5.o: In function
Tcl::details::tcl_cast::to(Tcl_Interp*, long const&)':
cpptcl.cc:(.text+0x58cf): undefined reference to Tcl_NewLongObj' /tmp/ccDeR3P5.o: In function
Tcl::details::tcl_cast::from(Tcl_Interp*, Tcl_Obj*)':
cpptcl.cc:(.text+0x58fc): undefined reference to Tcl_GetWideIntFromObj' /tmp/ccDeR3P5.o: In function
Tcl::details::tcl_cast::to(Tcl_Interp*, long long const&)':
cpptcl.cc:(.text+0x5981): undefined reference to Tcl_NewWideIntObj' /tmp/ccDeR3P5.o: In function
Tcl::details::tcl_cast::from(Tcl_Interp*, Tcl_Obj*)':
cpptcl.cc:(.text+0x59ae): undefined reference to Tcl_GetBooleanFromObj' /tmp/ccDeR3P5.o: In function
Tcl::details::tcl_cast::to(Tcl_Interp*, bool const&)':
cpptcl.cc:(.text+0x5a39): undefined reference to Tcl_NewIntObj' /tmp/ccDeR3P5.o: In function
Tcl::details::tcl_cast::from(Tcl_Interp*, Tcl_Obj*)':
cpptcl.cc:(.text+0x5a66): undefined reference to Tcl_GetDoubleFromObj' /tmp/ccDeR3P5.o: In function
Tcl::details::tcl_cast::to(Tcl_Interp*, double const&)':
cpptcl.cc:(.text+0x5afb): undefined reference to Tcl_NewDoubleObj' /tmp/ccDeR3P5.o: In function
Tcl::details::tcl_caststd::string::from(Tcl_Interp*, Tcl_Obj*)':
cpptcl.cc:(.text+0x5b2b): undefined reference to Tcl_GetString' /tmp/ccDeR3P5.o: In function
Tcl::details::tcl_caststd::string::to(Tcl_Interp*, std::string const&)':
cpptcl.cc:(.text+0x5b9d): undefined reference to Tcl_NewStringObj' /tmp/ccDeR3P5.o: In function
Tcl::details::tcl_cast<char const*>::from(Tcl_Interp*, Tcl_Obj*)':
cpptcl.cc:(.text+0x5bbc): undefined reference to Tcl_GetString' /tmp/ccDeR3P5.o: In function
Tcl::details::tcl_cast<char const*>::to(Tcl_Interp*, char const* const&)':
cpptcl.cc:(.text+0x5be2): undefined reference to Tcl_NewStringObj' /tmp/ccDeR3P5.o: In function
Tcl::details::tcl_cast<std::vector<std::string, std::allocatorstd::string > >::from(Tcl_Interp*, Tcl_Obj*)':
cpptcl.cc:(.text+0x5c12): undefined reference to Tcl_ListObjLength' cpptcl.cc:(.text+0x5ca7): undefined reference to
Tcl_ListObjIndex'
cpptcl.cc:(.text+0x5cbf): undefined reference to Tcl_GetString' /tmp/ccDeR3P5.o: In function
Tcl::details::tcl_cast<std::vector<std::string, std::allocatorstd::string > >::to(Tcl_Interp*, std::vector<std::string, std::allocatorstd::string > const&)':
cpptcl.cc:(.text+0x5e2e): undefined reference to Tcl_NewStringObj' cpptcl.cc:(.text+0x5e8f): undefined reference to
Tcl_NewListObj'
/tmp/ccDeR3P5.o: In function Tcl::details::tcl_cast<Tcl::object>::to(Tcl_Interp*, Tcl::object const&)': cpptcl.cc:(.text+0x5f6a): undefined reference to
Tcl_DuplicateObj'
/tmp/ccDeR3P5.o: In function Tcl::tcl_error::tcl_error(Tcl_Interp*)': cpptcl.cc:(.text._ZN3Tcl9tcl_errorC2EP10Tcl_Interp[_ZN3Tcl9tcl_errorC5EP10Tcl_Interp]+0x25): undefined reference to
Tcl_GetObjResult'
cpptcl.cc:(.text._ZN3Tcl9tcl_errorC2EP10Tcl_Interp[_ZN3Tcl9tcl_errorC5EP10Tcl_Interp]+0x2d): undefined reference to Tcl_GetString' /tmp/ccDeR3P5.o: In function
Tcl::object& Tcl::object::assign<Tcl_Obj* const*>(Tcl_Obj* const*, Tcl_Obj* const*)':
cpptcl.cc:(.text.ZN3Tcl6object6assignIPKP7Tcl_ObjEERS0_T_S7[ZN3Tcl6object6assignIPKP7Tcl_ObjEERS0_T_S7]+0x81): undefined reference to `Tcl_SetListObj'
collect2: error: ld returned 1 exit status
make: *** [example2] Error 1
First of all, I'd like to thank you for continuing the development of this. It's a really useful library.
The issue I found is that if you are using an embedded Tcl::interpreter
, then try to import a package, this doesn't work. An Example:
Tcl::interpreter i;
i.eval("package require Expect"); //throws a tcl_error
The solution I found, through use of this forum thread: http://objectmix.com/tcl/15810-finding-expect-package-using-embedded-tcl-c-application.html
is to add this line:
Tcl_Init(interp_);
to all the constructors for Tcl::interpreter
around line 937 in cpptcl.cc
, directly after the call:
interp_ = Tcl_CreateInterp();
I think what happens is the auto_path
Tcl variable isn't set unless this call is made.
I added the line to the following functions:
void object::set_interp(Tcl_Interp *interp)
interpreter::interpreter()
interpreter::interpreter(Tcl_Interp *interp, bool owner)
I am not certain that's all the locations that require this, but I'm fairly sure this is the case.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.