Giter VIP home page Giter VIP logo

Comments (3)

ry avatar ry commented on May 17, 2024

To get a better idea of what order we should do these in, take a look at this dtrace:

> sudo dtrace  -q -n 'pid$target::v8*:entry { if (strstr(probefunc, "internal") == 0 && strstr(probefunc, "base") == 0 && strstr(probefunc, "platform") == 0 && strstr(probefunc, "Extension") == 0) { printf("%s\n", probefunc) } }' -c "deno tests/001_hello.js"
dtrace: system integrity protection is on, some features will not be available

v8::V8::InitializePlatform(v8::Platform*)
v8::tracing::TracingCategoryObserver::SetUp()
v8::V8::Initialize()
v8::V8::SetFlagsFromCommandLine(int*, char**, bool)
v8::Isolate::New(v8::Isolate::CreateParams const&)
v8::Isolate::Initialize(v8::Isolate*, v8::Isolate::CreateParams const&)
v8::sampler::Sampler::Sampler(v8::Isolate*)
v8::Isolate::SetCaptureStackTraceForUncaughtExceptions(bool, int, v8::StackTrace::StackTraceOptions)
v8::Isolate::SetPromiseRejectCallback(void (*)(v8::PromiseRejectMessage))
v8::Isolate::AddMessageListener(void (*)(v8::Local<v8::Message>, v8::Local<v8::Value>), v8::Local<v8::Value>)
v8::Isolate::AddMessageListenerWithErrorLevel(void (*)(v8::Local<v8::Message>, v8::Local<v8::Value>), int, v8::Local<v8::Value>
v8::Isolate::SetHostInitializeImportMetaObjectCallback(void (*)(v8::Local<v8::Context>, v8::Local<v8::Module>, v8::Local<v8::Ob
v8::Isolate::SetHostImportModuleDynamicallyCallback(v8::MaybeLocal<v8::Promise> (*)(v8::Local<v8::Context>, v8::Local<v8::Scrip
v8::Locker::Initialize(v8::Isolate*)
v8::Isolate::Enter()
v8::HandleScope::HandleScope(v8::Isolate*)
v8::Locker::IsActive()
v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::Local<v
v8::FunctionTemplate::SetCallHandler(void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::SideEffect
v8::FunctionTemplate::ReadOnlyPrototype()
v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::Local<v
v8::FunctionTemplate::SetCallHandler(void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::SideEffect
v8::FunctionTemplate::ReadOnlyPrototype()
v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::Local<v
v8::FunctionTemplate::SetCallHandler(void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::SideEffect
v8::FunctionTemplate::ReadOnlyPrototype()
v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::Local<v
v8::FunctionTemplate::SetCallHandler(void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::SideEffect
v8::FunctionTemplate::ReadOnlyPrototype()
v8::ObjectTemplate::New(v8::Isolate*, v8::Local<v8::FunctionTemplate>)
v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::Local<v
v8::FunctionTemplate::SetCallHandler(void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::SideEffect
v8::FunctionTemplate::ReadOnlyPrototype()
v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::Local<v
v8::FunctionTemplate::SetCallHandler(void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::SideEffect
v8::FunctionTemplate::ReadOnlyPrototype()
v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::Local<v
v8::FunctionTemplate::SetCallHandler(void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::SideEffect
v8::FunctionTemplate::ReadOnlyPrototype()
v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::Local<v
v8::FunctionTemplate::SetCallHandler(void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::SideEffect
v8::FunctionTemplate::ReadOnlyPrototype()
v8::ObjectTemplate::New(v8::Isolate*, v8::Local<v8::FunctionTemplate>)
v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::Local<v
v8::FunctionTemplate::SetCallHandler(void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::SideEffect
v8::FunctionTemplate::ReadOnlyPrototype()
v8::Object::SetAccessorProperty(v8::Local<v8::Name>, v8::Local<v8::Function>, v8::Local<v8::Function>, v8::PropertyAttribute, v
v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::Local<v
v8::FunctionTemplate::SetCallHandler(void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::SideEffect
v8::FunctionTemplate::ReadOnlyPrototype()
v8::ObjectTemplate::New(v8::Isolate*, v8::Local<v8::FunctionTemplate>)
v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::Local<v
v8::FunctionTemplate::SetCallHandler(void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::SideEffect
v8::FunctionTemplate::ReadOnlyPrototype()
v8::Object::SetAccessorProperty(v8::Local<v8::Name>, v8::Local<v8::Function>, v8::Local<v8::Function>, v8::PropertyAttribute, v
v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::Local<v
v8::FunctionTemplate::SetCallHandler(void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::SideEffect
v8::FunctionTemplate::ReadOnlyPrototype()
v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::Local<v
v8::FunctionTemplate::SetCallHandler(void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::SideEffect
v8::FunctionTemplate::ReadOnlyPrototype()
v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::Local<v
v8::FunctionTemplate::SetCallHandler(void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::SideEffect
v8::FunctionTemplate::ReadOnlyPrototype()
v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::Local<v
v8::FunctionTemplate::SetCallHandler(void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::SideEffect
v8::FunctionTemplate::ReadOnlyPrototype()
v8::ObjectTemplate::New(v8::Isolate*, v8::Local<v8::FunctionTemplate>)
v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::Local<v
v8::FunctionTemplate::SetCallHandler(void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::SideEffect
v8::FunctionTemplate::ReadOnlyPrototype()
v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::Local<v
v8::FunctionTemplate::SetCallHandler(void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::SideEffect
v8::FunctionTemplate::ReadOnlyPrototype()
v8::Object::SetAccessorProperty(v8::Local<v8::Name>, v8::Local<v8::Function>, v8::Local<v8::Function>, v8::PropertyAttribute, v
v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::Local<v
v8::FunctionTemplate::SetCallHandler(void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::SideEffect
v8::FunctionTemplate::ReadOnlyPrototype()
v8::ObjectTemplate::New(v8::Isolate*, v8::Local<v8::FunctionTemplate>)
v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::Local<v
v8::FunctionTemplate::SetCallHandler(void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::SideEffect
v8::FunctionTemplate::ReadOnlyPrototype()
v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::Local<v
v8::FunctionTemplate::SetCallHandler(void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::SideEffect
v8::FunctionTemplate::ReadOnlyPrototype()
v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::Local<v
v8::FunctionTemplate::SetCallHandler(void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>, v8::SideEffect
v8::FunctionTemplate::ReadOnlyPrototype()
v8::Object::SetAccessorProperty(v8::Local<v8::Name>, v8::Local<v8::Function>, v8::Local<v8::Function>, v8::PropertyAttribute, v
v8::Isolate::Exit()
v8::Locker::~Locker()
v8::Locker::Initialize(v8::Isolate*)
v8::Isolate::Enter()
v8::HandleScope::HandleScope(v8::Isolate*)
v8::Locker::IsActive()
v8::Context::GetIsolate()
v8::Isolate::Enter()
v8::HandleScope::HandleScope(v8::Isolate*)
v8::Locker::IsActive()
v8::Context::Enter()
v8::Isolate::GetCurrent()
v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::NewStringType, int)
v8::Isolate::GetCurrent()
v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::NewStringType, int)
v8::TryCatch::TryCatch(v8::Isolate*)
v8::Script::Compile(v8::Local<v8::Context>, v8::Local<v8::String>, v8::ScriptOrigin*)
v8::ScriptCompiler::Compile(v8::Local<v8::Context>, v8::ScriptCompiler::Source*, v8::ScriptCompiler::CompileOptions, v8::Script
v8::ScriptCompiler::CompileUnboundInternal(v8::Isolate*, v8::ScriptCompiler::Source*, v8::ScriptCompiler::CompileOptions, v8::S
v8::EscapableHandleScope::EscapableHandleScope(v8::Isolate*)
v8::Locker::IsActive()
v8::Context::Enter()
v8::Context::Exit()
v8::Script::Run(v8::Local<v8::Context>)
v8::EscapableHandleScope::EscapableHandleScope(v8::Isolate*)
v8::Locker::IsActive()
v8::TryCatch::~TryCatch()
v8::Context::Exit()
v8::Isolate::Exit()
v8::Isolate::Exit()
v8::Locker::~Locker()
v8::Locker::Initialize(v8::Isolate*)
v8::Isolate::Enter()
v8::HandleScope::HandleScope(v8::Isolate*)
v8::Locker::IsActive()
v8::Context::GetIsolate()
v8::Isolate::Enter()
v8::HandleScope::HandleScope(v8::Isolate*)
v8::Locker::IsActive()
v8::Context::Enter()
v8::Isolate::GetCurrent()
v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::NewStringType, int)
v8::Isolate::GetCurrent()
v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::NewStringType, int)
v8::TryCatch::TryCatch(v8::Isolate*)
v8::Script::Compile(v8::Local<v8::Context>, v8::Local<v8::String>, v8::ScriptOrigin*)
v8::ScriptCompiler::Compile(v8::Local<v8::Context>, v8::ScriptCompiler::Source*, v8::ScriptCompiler::CompileOptions, v8::Script
v8::ScriptCompiler::CompileUnboundInternal(v8::Isolate*, v8::ScriptCompiler::Source*, v8::ScriptCompiler::CompileOptions, v8::S
v8::EscapableHandleScope::EscapableHandleScope(v8::Isolate*)
v8::Locker::IsActive()
v8::Context::Enter()
v8::Context::Exit()
v8::Script::Run(v8::Local<v8::Context>)
v8::EscapableHandleScope::EscapableHandleScope(v8::Isolate*)
v8::Locker::IsActive()
v8::Locker::Initialize(v8::Isolate*)
v8::EscapableHandleScope::EscapableHandleScope(v8::Isolate*)
v8::Locker::IsActive()
v8::SharedArrayBuffer::New(v8::Isolate*, void*, unsigned long, v8::ArrayBufferCreationMode)
v8::(anonymous namespace)::SetupSharedArrayBuffer(v8::Isolate*, void*, unsigned long, v8::ArrayBufferCreationMode)
v8::HandleScope::~HandleScope()
v8::Locker::~Locker()
v8::HandleScope::HandleScope(v8::Isolate*)
v8::Locker::IsActive()
v8::Value::IsFunction() const
v8::HandleScope::HandleScope(v8::Isolate*)
v8::Locker::IsActive()
v8::Value::IsInt32() const
v8::Value::Int32Value(v8::Local<v8::Context>) const
v8::Value::IsArrayBufferView() const
v8::ArrayBufferView::Buffer()
v8::ArrayBuffer::GetContents()
v8::ArrayBuffer::GetContents(bool)
v8::ArrayBufferView::ByteOffset()
v8::ArrayBufferView::ByteLength()
v8::Value::IsArrayBufferView() const
v8::ArrayBuffer::New(v8::Isolate*, unsigned long)
v8::ArrayBuffer::GetContents()
v8::ArrayBuffer::GetContents(bool)
v8::Uint8Array::New(v8::Local<v8::ArrayBuffer>, unsigned long, unsigned long)
v8::HandleScope::HandleScope(v8::Isolate*)
v8::Locker::IsActive()
v8::Value::IsInt32() const
v8::Value::Int32Value(v8::Local<v8::Context>) const
v8::Value::IsArrayBufferView() const
v8::ArrayBufferView::Buffer()
v8::ArrayBuffer::GetContents()
v8::ArrayBuffer::GetContents(bool)
v8::ArrayBufferView::ByteOffset()
v8::ArrayBufferView::ByteLength()
v8::Value::IsArrayBufferView() const
v8::V8::GetVersion()
v8::Uint8Array::New(v8::Local<v8::ArrayBuffer>, unsigned long, unsigned long)
Hello World
v8::TryCatch::~TryCatch()
v8::Context::Exit()
v8::Isolate::Exit()
v8::Isolate::Exit()
v8::Locker::~Locker()
v8::Isolate::Enter()
v8::Locker::Initialize(v8::Isolate*)
v8::HandleScope::HandleScope(v8::Isolate*)
v8::Locker::IsActive()
v8::Context::Enter()
v8::Isolate::GetCurrent()
v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::NewStringType, int)
v8::Isolate::GetCurrent()
v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::NewStringType, int)
v8::Value::IsTrue() const
v8::TryCatch::TryCatch(v8::Isolate*)
v8::ScriptCompiler::CompileModule(v8::Isolate*, v8::ScriptCompiler::Source*, v8::ScriptCompiler::CompileOptions, v8::ScriptComp
v8::ScriptCompiler::CompileUnboundInternal(v8::Isolate*, v8::ScriptCompiler::Source*, v8::ScriptCompiler::CompileOptions, v8::S
v8::EscapableHandleScope::EscapableHandleScope(v8::Isolate*)
v8::Locker::IsActive()
v8::TryCatch::HasCaught() const
v8::Module::GetIdentityHash() const
v8::Module::GetModuleRequestsLength() const
v8::TryCatch::~TryCatch()
v8::Context::Exit()
v8::Locker::~Locker()
v8::Isolate::Exit()
v8::Isolate::Enter()
v8::Locker::Initialize(v8::Isolate*)
v8::HandleScope::HandleScope(v8::Isolate*)
v8::Locker::IsActive()
v8::Context::Enter()
v8::TryCatch::TryCatch(v8::Isolate*)
v8::Module::GetStatus() const
v8::Module::InstantiateModule(v8::Local<v8::Context>, v8::MaybeLocal<v8::Module> (*)(v8::Local<v8::Context>, v8::Local<v8::Stri
v8::TryCatch::HasCaught() const
v8::TryCatch::~TryCatch()
v8::Context::Exit()
v8::Locker::~Locker()
v8::Isolate::Exit()
v8::Isolate::Enter()
v8::Locker::Initialize(v8::Isolate*)
v8::HandleScope::HandleScope(v8::Isolate*)
v8::Locker::IsActive()
v8::Context::Enter()
v8::Module::GetStatus() const
v8::Module::Evaluate(v8::Local<v8::Context>)
v8::EscapableHandleScope::EscapableHandleScope(v8::Isolate*)
v8::Locker::IsActive()
v8::HandleScope::HandleScope(v8::Isolate*)
v8::Locker::IsActive()
v8::Value::BooleanValue(v8::Isolate*) const
v8::String::Utf8Value::Utf8Value(v8::Isolate*, v8::Local<v8::Value>)
v8::Value::ToString(v8::Local<v8::Context>) const
v8::String::Utf8Length(v8::Isolate*) const
v8::String::WriteUtf8(v8::Isolate*, char*, int, int*, int) const
v8::TryCatch::~TryCatch()
v8::String::Utf8Value::~Utf8Value()
v8::Module::GetStatus() const
v8::Context::GetIsolate()
v8::Context::Exit()
v8::Locker::~Locker()
v8::Isolate::Exit()
v8::Locker::Initialize(v8::Isolate*)
v8::Isolate::Enter()
v8::HandleScope::HandleScope(v8::Isolate*)
v8::Locker::IsActive()
v8::Context::GetIsolate()
v8::Isolate::Enter()
v8::HandleScope::HandleScope(v8::Isolate*)
v8::Locker::IsActive()
v8::Context::Enter()
v8::Isolate::GetCurrent()
v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::NewStringType, int)
v8::Isolate::GetCurrent()
v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::NewStringType, int)
v8::TryCatch::TryCatch(v8::Isolate*)
v8::Script::Compile(v8::Local<v8::Context>, v8::Local<v8::String>, v8::ScriptOrigin*)
v8::ScriptCompiler::Compile(v8::Local<v8::Context>, v8::ScriptCompiler::Source*, v8::ScriptCompiler::CompileOptions, v8::Script
v8::ScriptCompiler::CompileUnboundInternal(v8::Isolate*, v8::ScriptCompiler::Source*, v8::ScriptCompiler::CompileOptions, v8::S
v8::EscapableHandleScope::EscapableHandleScope(v8::Isolate*)
v8::Locker::IsActive()
v8::Context::Enter()
v8::Context::Exit()
v8::Script::Run(v8::Local<v8::Context>)
v8::EscapableHandleScope::EscapableHandleScope(v8::Isolate*)
v8::Locker::IsActive()
v8::TryCatch::~TryCatch()
v8::Context::Exit()
v8::Isolate::Exit()
v8::Isolate::Exit()
v8::Locker::~Locker()
v8::Locker::Initialize(v8::Isolate*)
v8::Isolate::Enter()
v8::HandleScope::HandleScope(v8::Isolate*)
v8::Locker::IsActive()
v8::Context::GetIsolate()
v8::Isolate::Enter()
v8::HandleScope::HandleScope(v8::Isolate*)
v8::Locker::IsActive()
v8::Context::Enter()
v8::Isolate::GetCurrent()
v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::NewStringType, int)
v8::Isolate::GetCurrent()
v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::NewStringType, int)
v8::TryCatch::TryCatch(v8::Isolate*)
v8::Script::Compile(v8::Local<v8::Context>, v8::Local<v8::String>, v8::ScriptOrigin*)
v8::ScriptCompiler::Compile(v8::Local<v8::Context>, v8::ScriptCompiler::Source*, v8::ScriptCompiler::CompileOptions, v8::Script
v8::ScriptCompiler::CompileUnboundInternal(v8::Isolate*, v8::ScriptCompiler::Source*, v8::ScriptCompiler::CompileOptions, v8::S
v8::EscapableHandleScope::EscapableHandleScope(v8::Isolate*)
v8::Locker::IsActive()
v8::Context::Enter()
v8::Context::Exit()
v8::Script::Run(v8::Local<v8::Context>)
v8::EscapableHandleScope::EscapableHandleScope(v8::Isolate*)
v8::Locker::IsActive()
v8::TryCatch::~TryCatch()
v8::Context::Exit()
v8::Isolate::Exit()
v8::Isolate::Exit()
v8::Locker::~Locker()
v8::V8::DisposeGlobal(unsigned long*)
v8::Isolate::Dispose()
v8::sampler::Sampler::~Sampler()

from rusty_v8.

bartlomieju avatar bartlomieju commented on May 17, 2024
  • v8::Isolate::GetCurrent (Bert: I don't think this is actually needed, it's just a relic from when v8 used to store the active isolate in thread local storage).
  • v8::Isolate::Scope (ditto)

I'm trying to port Exception::TypeError et al and they actually use Isolate::Current() API, so we may want to port GetCurrent and Scope as well.

from rusty_v8.

ry avatar ry commented on May 17, 2024

Complete. Deno integration has begun in denoland/deno#3556, I will create new issues as they pop up.

from rusty_v8.

Related Issues (20)

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.