Coder Social home page Coder Social logo

wizard-engine's People

Contributors

arnevogel avatar btwj avatar ejrgilbert avatar haoyu-zc avatar k-sareen avatar katrina0406 avatar khagankhan avatar linxuanm avatar nerodesu017 avatar pco2699 avatar syrusakbary avatar titzer avatar wavesdog47 avatar wavid-b avatar yashanand1910 avatar yicheng4 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wizard-engine's Issues

Cant build wizard

Hi,
I was trying to build wizard with this tutorial (https://github.com/titzer/wizard-engine/blob/master/doc/Building.md), but all i got was this error bellow. I tryed the recomendations in case of error, but all i got was that "vctags not found"

gnery@gnery-Vivobook:/Desktop/Projeto_pesquisa/wizard-engine$ make -j
vctags -e src/engine/.v3 src/engine/v3/.v3 src/util/.v3 src/wave/.v3 src/wasi/.v3 src/jawa/.v3 src/engine/.v3 src/engine/v3/.v3 src/util/.v3 test/spectest/.v3 test/spectest.main.v3 src/engine/.v3 src/engine/v3/.v3 src/util/.v3 src/jawa/.v3 test/unittest/.v3 test/spectest/.v3 test/unittest.main.v3 src/wasi/x86-64-linux/.v3 src/engine/x86-64/.v3
./build.sh spectest x86-linux
./build.sh wizeng x86-linux
./build.sh unittest x86-linux
./build.sh objdump x86-linux
./build.sh spectest x86-64-linux
./build.sh wizeng x86-64-linux
./build.sh unittest x86-64-linux
./build.sh objdump x86-64-linux
./build.sh spectest jvm
./build.sh wizeng jvm
./build.sh unittest jvm
./build.sh objdump jvm
./build.sh spectest x86-linux
./build.sh wizeng x86-linux
./build.sh unittest x86-linux
./build.sh objdump x86-linux
./build.sh spectest x86-64-linux
./build.sh wizeng x86-64-linux
./build.sh unittest x86-64-linux
./build.sh objdump x86-64-linux
./build.sh spectest jvm
./build.sh wizeng jvm
./build.sh unittest jvm
./build.sh objdump jvm
[src/monitors/MemStatsMonitor.v3 @ 124:30] ParseError: ',' or ';' expected
def log2_WASM_PAGE_SIZE = 16u6;
^
make: *** [Makefile:68: bin/wizeng.x86-linux] Error 1
make: *** Waiting for unfinished jobs....
[src/monitors/MemStatsMonitor.v3 @ 124:30] ParseError: ',' or ';' expected
def log2_WASM_PAGE_SIZE = 16u6;
^
make: *** [Makefile:42: bin/wizeng.jvm] Error 1
[src/monitors/MemStatsMonitor.v3 @ 124:30] ParseError: ',' or ';' expected
def log2_WASM_PAGE_SIZE = 16u6;
^
cp: cannot stat 'bin/wizeng.x86-64-linux': No such file or directory
warning: could not pregen code into bin/wizeng.x86-64-linux, may be slower (see bin/wizeng.x86-64-linux.pregen)
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 140:35] UnresolvedMember: type Pointer has no such member "atRef"
var ptr = Pointer.atRef(pregen_header) + X86_64PreGenHeader.magicWord.offset;
^^^^^
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 140:56] UnresolvedOp: operator "+" cannot be found for type "?"
var ptr = Pointer.atRef(pregen_header) + X86_64PreGenHeader.magicWord.offset;
^
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 141:46] UnresolvedOp: operator "-" cannot be found for type "?"
var page_offset = int.!((ptr - Pointer.NULL) & (PAGE_SIZE - 1));
^
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 141:62] UnresolvedOp: operator "&" cannot be found for type "?"
var page_offset = int.!((ptr - Pointer.NULL) & (PAGE_SIZE - 1));
^
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 141:40] TypeError: type cast always fails
var page_offset = int.!((ptr - Pointer.NULL) & (PAGE_SIZE - 1));
^
[src/engine/x86-64/X86_64Stack.v3 @ 725:65] UnresolvedMember: type CiRuntime has no such member "forgeRange"
return Ref<X86_64InterpreterFrame>.of(CiRuntime.forgeRange(sp, X86_64InterpreterFrame.size));
^^^^^^^^^^
[src/engine/x86-64/X86_64Memory.v3 @ 27:61] UnresolvedMember: type CiRuntime has no such member "forgeRange"
platform_specific_setData(CiRuntime.forgeRange(start, int.!(bytes)));
^^^^^^^^^^
[src/engine/x86-64/X86_64Memory.v3 @ 61:53] UnresolvedMember: type CiRuntime has no such member "forgeRange"
platform_specific_setData(CiRuntime.forgeRange(start, int.!(cur_bytes + add_bytes)));
^^^^^^^^^^
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 140:35] UnresolvedMember: type Pointer has no such member "atRef"
var ptr = Pointer.atRef(pregen_header) + X86_64PreGenHeader.magicWord.offset;
^^^^^
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 140:56] UnresolvedOp: operator "+" cannot be found for type "?"
var ptr = Pointer.atRef(pregen_header) + X86_64PreGenHeader.magicWord.offset;
^
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 141:46] UnresolvedOp: operator "-" cannot be found for type "?"
var page_offset = int.!((ptr - Pointer.NULL) & (PAGE_SIZE - 1));
^
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 141:62] UnresolvedOp: operator "&" cannot be found for type "?"
var page_offset = int.!((ptr - Pointer.NULL) & (PAGE_SIZE - 1));
^
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 141:40] TypeError: type cast always fails
var page_offset = int.!((ptr - Pointer.NULL) & (PAGE_SIZE - 1));
^
[src/engine/x86-64/X86_64Stack.v3 @ 725:65] UnresolvedMember: type CiRuntime has no such member "forgeRange"
return Ref<X86_64InterpreterFrame>.of(CiRuntime.forgeRange(sp, X86_64InterpreterFrame.size));
^^^^^^^^^^
[src/engine/x86-64/X86_64Memory.v3 @ 27:61] UnresolvedMember: type CiRuntime has no such member "forgeRange"
platform_specific_setData(CiRuntime.forgeRange(start, int.!(bytes)));
^^^^^^^^^^
[src/engine/x86-64/X86_64Memory.v3 @ 61:53] UnresolvedMember: type CiRuntime has no such member "forgeRange"
platform_specific_setData(CiRuntime.forgeRange(start, int.!(cur_bytes + add_bytes)));
^^^^^^^^^^
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 140:35] UnresolvedMember: type Pointer has no such member "atRef"
var ptr = Pointer.atRef(pregen_header) + X86_64PreGenHeader.magicWord.offset;
^^^^^
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 140:56] UnresolvedOp: operator "+" cannot be found for type "?"
var ptr = Pointer.atRef(pregen_header) + X86_64PreGenHeader.magicWord.offset;
^
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 141:46] UnresolvedOp: operator "-" cannot be found for type "?"
var page_offset = int.!((ptr - Pointer.NULL) & (PAGE_SIZE - 1));
^
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 141:62] UnresolvedOp: operator "&" cannot be found for type "?"
var page_offset = int.!((ptr - Pointer.NULL) & (PAGE_SIZE - 1));
^
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 141:40] TypeError: type cast always fails
var page_offset = int.!((ptr - Pointer.NULL) & (PAGE_SIZE - 1));
^
[src/engine/x86-64/X86_64Stack.v3 @ 725:65] UnresolvedMember: type CiRuntime has no such member "forgeRange"
return Ref<X86_64InterpreterFrame>.of(CiRuntime.forgeRange(sp, X86_64InterpreterFrame.size));
^^^^^^^^^^
[src/engine/x86-64/X86_64Memory.v3 @ 27:61] UnresolvedMember: type CiRuntime has no such member "forgeRange"
platform_specific_setData(CiRuntime.forgeRange(start, int.!(bytes)));
^^^^^^^^^^
[src/engine/x86-64/X86_64Memory.v3 @ 61:53] UnresolvedMember: type CiRuntime has no such member "forgeRange"
platform_specific_setData(CiRuntime.forgeRange(start, int.!(cur_bytes + add_bytes)));
^^^^^^^^^^
Command 'vctags' not found, did you mean:
command 'ctags' from snap universal-ctags (0.2024-02-26+08:12:05+5d8c5927a)
command 'ctags' from deb exuberant-ctags (1:5.9
svn20110310-16ubuntu0.22.04.1)
command 'ctags' from deb universal-ctags (5.9.20210829.0-1)
See 'snap info ' for additional versions.
[src/monitors/MemStatsMonitor.v3 @ 124:30] ParseError: ',' or ';' expected
def log2_WASM_PAGE_SIZE = 16u6;
^
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 140:35] UnresolvedMember: type Pointer has no such member "atRef"
var ptr = Pointer.atRef(pregen_header) + X86_64PreGenHeader.magicWord.offset;
^^^^^
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 140:56] UnresolvedOp: operator "+" cannot be found for type "?"
var ptr = Pointer.atRef(pregen_header) + X86_64PreGenHeader.magicWord.offset;
^
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 141:46] UnresolvedOp: operator "-" cannot be found for type "?"
var page_offset = int.!((ptr - Pointer.NULL) & (PAGE_SIZE - 1));
^
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 141:62] UnresolvedOp: operator "&" cannot be found for type "?"
var page_offset = int.!((ptr - Pointer.NULL) & (PAGE_SIZE - 1));
^
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 141:40] TypeError: type cast always fails
var page_offset = int.!((ptr - Pointer.NULL) & (PAGE_SIZE - 1));
^
[src/engine/x86-64/X86_64Stack.v3 @ 725:65] UnresolvedMember: type CiRuntime has no such member "forgeRange"
return Ref<X86_64InterpreterFrame>.of(CiRuntime.forgeRange(sp, X86_64InterpreterFrame.size));
^^^^^^^^^^
[src/engine/x86-64/X86_64Memory.v3 @ 27:61] UnresolvedMember: type CiRuntime has no such member "forgeRange"
platform_specific_setData(CiRuntime.forgeRange(start, int.!(bytes)));
^^^^^^^^^^
[src/engine/x86-64/X86_64Memory.v3 @ 61:53] UnresolvedMember: type CiRuntime has no such member "forgeRange"
platform_specific_setData(CiRuntime.forgeRange(start, int.!(cur_bytes + add_bytes)));
^^^^^^^^^^
[src/monitors/MemStatsMonitor.v3 @ 124:30] ParseError: ',' or ';' expected
def log2_WASM_PAGE_SIZE = 16u6;
^
cp: cannot stat 'bin/wizeng.x86-64-linux': No such file or directory
warning: could not pregen code into bin/wizeng.x86-64-linux, may be slower (see bin/wizeng.x86-64-linux.pregen)
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 140:35] UnresolvedMember: type Pointer has no such member "atRef"
var ptr = Pointer.atRef(pregen_header) + X86_64PreGenHeader.magicWord.offset;
^^^^^
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 140:56] UnresolvedOp: operator "+" cannot be found for type "?"
var ptr = Pointer.atRef(pregen_header) + X86_64PreGenHeader.magicWord.offset;
^
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 141:46] UnresolvedOp: operator "-" cannot be found for type "?"
var page_offset = int.!((ptr - Pointer.NULL) & (PAGE_SIZE - 1));
^
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 141:62] UnresolvedOp: operator "&" cannot be found for type "?"
var page_offset = int.!((ptr - Pointer.NULL) & (PAGE_SIZE - 1));
^
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 141:40] TypeError: type cast always fails
var page_offset = int.!((ptr - Pointer.NULL) & (PAGE_SIZE - 1));
^
[src/engine/x86-64/X86_64Stack.v3 @ 725:65] UnresolvedMember: type CiRuntime has no such member "forgeRange"
return Ref<X86_64InterpreterFrame>.of(CiRuntime.forgeRange(sp, X86_64InterpreterFrame.size));
^^^^^^^^^^
[src/engine/x86-64/X86_64Memory.v3 @ 27:61] UnresolvedMember: type CiRuntime has no such member "forgeRange"
platform_specific_setData(CiRuntime.forgeRange(start, int.!(bytes)));
^^^^^^^^^^
[src/engine/x86-64/X86_64Memory.v3 @ 61:53] UnresolvedMember: type CiRuntime has no such member "forgeRange"
platform_specific_setData(CiRuntime.forgeRange(start, int.!(cur_bytes + add_bytes)));
^^^^^^^^^^
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 140:35] UnresolvedMember: type Pointer has no such member "atRef"
var ptr = Pointer.atRef(pregen_header) + X86_64PreGenHeader.magicWord.offset;
^^^^^
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 140:56] UnresolvedOp: operator "+" cannot be found for type "?"
var ptr = Pointer.atRef(pregen_header) + X86_64PreGenHeader.magicWord.offset;
^
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 141:46] UnresolvedOp: operator "-" cannot be found for type "?"
var page_offset = int.!((ptr - Pointer.NULL) & (PAGE_SIZE - 1));
^
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 141:62] UnresolvedOp: operator "&" cannot be found for type "?"
var page_offset = int.!((ptr - Pointer.NULL) & (PAGE_SIZE - 1));
^
[src/engine/x86-64/X86_64PreGenStubs.v3 @ 141:40] TypeError: type cast always fails
var page_offset = int.!((ptr - Pointer.NULL) & (PAGE_SIZE - 1));
^
[src/engine/x86-64/X86_64Stack.v3 @ 725:65] UnresolvedMember: type CiRuntime has no such member "forgeRange"
return Ref<X86_64InterpreterFrame>.of(CiRuntime.forgeRange(sp, X86_64InterpreterFrame.size));
^^^^^^^^^^
[src/engine/x86-64/X86_64Memory.v3 @ 27:61] UnresolvedMember: type CiRuntime has no such member "forgeRange"
platform_specific_setData(CiRuntime.forgeRange(start, int.!(bytes)));
^^^^^^^^^^
[src/engine/x86-64/X86_64Memory.v3 @ 61:53] UnresolvedMember: type CiRuntime has no such member "forgeRange"
platform_specific_setData(CiRuntime.forgeRange(start, int.!(cur_bytes + add_bytes)));
^^^^^^^^^^
[src/monitors/MemStatsMonitor.v3 @ 124:30] ParseError: ',' or ';' expected
def log2_WASM_PAGE_SIZE = 16u6;

vctags not found

#159 I have compiled virgil. But when i try to use make in wizard, i get this error

image

Build error

Hi,

I get a error when building Wizard. Virgil is installed and in my path. I also get an error when building without parallelization (see very bottom).

About my system: I am running on linux. Virgil and Wizard are both up to date from the git.

Thanks in advance

$ v3c -version
Aeneas III-6.1418
Build Data: x86-linux 2021-08-06 19:01:30 by titzer@magic-carpet
$ make -j
./build.sh spectest x86-linux
./build.sh wizeng x86-linux
./build.sh unittest x86-linux
./build.sh objdump x86-linux
./build.sh spectest x86-64-linux
./build.sh wizeng x86-64-linux
./build.sh unittest x86-64-linux
./build.sh objdump x86-64-linux
./build.sh spectest jvm
[src/engine/v3/V3Target.v3 @ 37:26] ParseError: "{" expected
type TargetCode(v: void) #unboxed { }
                         ^
make: *** [Makefile:65: bin/spectest.x86-linux] Error 1
make: *** Waiting for unfinished jobs....
[src/engine/v3/V3Target.v3 @ 37:26] ParseError: "{" expected
type TargetCode(v: void) #unboxed { }
                         ^
make: *** [Makefile:68: bin/wizeng.x86-linux] Error 1
[src/engine/v3/V3Target.v3 @ 37:26] ParseError: "{" expected
type TargetCode(v: void) #unboxed { }
                         ^
make: *** [Makefile:71: bin/objdump.x86-linux] Error 1
[src/engine/v3/V3Target.v3 @ 37:26] ParseError: "{" expected
type TargetCode(v: void) #unboxed { }
                         ^
[src/engine/compiler/MacroAssembler.v3 @ 4:39] ParseError: "{" expected
type MasmAddr(base: Reg, offset: int) #unboxed {
                                      ^
[src/engine/compiler/RegSet.v3 @ 28:23] ParseError: "{" expected
type Reg(index: byte) #unboxed { }
                      ^
[src/engine/compiler/SinglePassCompiler.v3 @ 698:43] ParseError: "{" expected
type SpcReg(reg: Reg, regClass: RegClass) #unboxed { }
                                          ^
[src/engine/x86-64/X86_64Target.v3 @ 119:37] ParseError: "{" expected
type TargetCode(spc_entry: Pointer) #unboxed { }
                                    ^
[src/engine/compiler/MacroAssembler.v3 @ 4:39] ParseError: "{" expected
type MasmAddr(base: Reg, offset: int) #unboxed {
                                      ^
[src/engine/compiler/RegSet.v3 @ make: *** [Makefile:39: bin/spectest.jvm] Error 1
28:23] ParseError: "{" expected
type Reg(index: byte) #unboxed { }
                      ^
[src/engine/compiler/SinglePassCompiler.v3 @ 698:43] ParseError: "{" expected
type SpcReg(reg: Reg, regClass: RegClass) #unboxed { }
                                          ^
[src/engine/x86-64/X86_64Target.v3 @ 119:37] ParseError: "{" expected
type TargetCode(spc_entry: Pointer) #unboxed { }
                                    ^
cp: cannot stat 'bin/wizeng.x86-64-linux': No such file or directory
warning: could not serialize interpreter into bin/wizeng.x86-64-linux, may be slower
rm: cannot remove 'bin/wizeng.x86-64-linux.genint': No such file or directory
make: *** [Makefile:81: bin/wizeng.x86-64-linux] Error 1
[src/engine/compiler/MacroAssembler.v3 @ 4:39] ParseError: "{" expected
type MasmAddr(base: Reg, offset: int) #unboxed {
                                      ^
[src/engine/compiler/RegSet.v3 @ 28:23] ParseError: "{" expected
type Reg(index: byte) #unboxed { }
                      ^
[src/engine/compiler/SinglePassCompiler.v3 @ 698:43] ParseError: "{" expected
type SpcReg(reg: Reg, regClass: RegClass) #unboxed { }
                                          ^
[src/engine/x86-64/X86_64Target.v3 @ 119:37] ParseError: "{" expected
type TargetCode(spc_entry: Pointer) #unboxed { }
                                    ^
[src/engine/v3/V3Target.v3 @ 37:26] ParseError: "{" expected
type TargetCode(v: void) #unboxed { }
                         ^
make: *** [Makefile:62: bin/unittest.x86-linux] Error 1
[src/engine/compiler/MacroAssembler.v3 @ 4:39] ParseError: "{" expected
type MasmAddr(base: Reg, offset: int) #unboxed {
                                      ^
[src/engine/compiler/RegSet.v3 @ 28:23] ParseError: "{" expected
type Reg(index: byte) #unboxed { }
                      ^
[src/engine/compiler/SinglePassCompiler.v3 @ 698:43] ParseError: "{" expected
type SpcReg(reg: Reg, regClass: RegClass) #unboxed { }
                                          ^
[src/engine/x86-64/X86_64Target.v3 @ 119:37] ParseError: "{" expected
type TargetCode(spc_entry: Pointer) #unboxed {

$ make
./build.sh spectest x86-linux
[src/engine/v3/V3Target.v3 @ 37:26] ParseError: "{" expected
type TargetCode(v: void) #unboxed { }
                         ^
make: *** [Makefile:65: bin/spectest.x86-linux] Error 1

Loop monitor should show loop nesting

The --monitors=loops monitor should track the nesting depth of each loop and reflect that in its output report by indenting each loop according to its nesting level.

Implement SIMD instructions

Currently, Wizard supports the v128 type and recognizes all standardized opcodes in its code validator, but these instructions are not implemented in any of the execution tiers. It'd be great to have an implementation in the V3 interpreter (i.e. pure Virgil code) and/or in the x86-64 target, which would involve adding the needed SSE instructions to the assembler and interpreter.

Support wasm-c-api

It would be great if the Wizard Engine exported the wasm-c-api.

We recently opened Wasmer to allow usage of more runtimes under the hood, and this would allow users using Wizard Engine as a backend for Wasmer.
We'd be happy to sponsor this effort if it makes prioritizing it easier :)

Implement wasm-threads (atomics) proposal

The WebAssembly Threads proposal introduces a set of ~67 bytecodes that perform atomic operations on memory. Though still at Phase 3, this proposal has been implemented in Web browsers and is effectively finished. Wizard should implement these atomic operations, which primarily involves work in the execution tiers. Currently, Wizard already has placeholders for the opcodes in his large Opcode enum--thus work is already scoped.

side-table

Found this project through the Youtube video "[OOPSLA] A Fast In-Place Interpreter for WebAssembly" and just realized that the idea of the side-table is pretty much the same as what I have implemented in my wasm in-place interpreter project back in 2022 (https://github.com/mbbill/Silverfir/blob/main/docs/Interpreter.md)
I wrote it mostly for embedded projects because an in-place interpreter is critical for memory usage. Would love to discuss more if you don't mind.
Sorry for posting here since it's not actually an issue.

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.