eosnetworkfoundation / dune Goto Github PK
View Code? Open in Web Editor NEWThis project forked from larryk85/dune
Obsolete. Use https://github.com/AntelopeIO/DUNE instead.
License: MIT License
This project forked from larryk85/dune
Obsolete. Use https://github.com/AntelopeIO/DUNE instead.
License: MIT License
Hello,
I've cloned dune (using latest MacOS on M1), changed to arm64 branch and build DUNE based on that branch.
When starting up a node I get below error.
Please note that I have taken the confi.ini from the DUNE repository and have tried with 3 different values for the runtime: wabt, eos_vm_jit, and eos_vm.
However despite below log output stating that it is using my config file, it seems to ignore the runtime setting as I always get the same error, no matter if I use wabt, eos_vm_jit, or eos_vm.
./dune --start 'ralf' ./config.ini
Creating docker container [dune_container]
Creating node [ralf]
Using Configuration [/host//Users/ralfweinand/dev/DUNE/config.ini]
Active [ralf]
info 2022-07-09T07:47:04.092 nodeos chain_plugin.cpp:658 plugin_initialize ] initializing chain plugin
info 2022-07-09T07:47:04.093 nodeos chain_plugin.cpp:462 operator() ] Support for builtin protocol feature 'GET_CODE_HASH' (with digest of '960f851f3e2e96acf5bb2c79ac0522a7552c721b6e88a63a24bcf27970d620c5') is enabled with preactivation required
info 2022-07-09T07:47:04.093 nodeos chain_plugin.cpp:571 operator() ] Saved default specification for builtin protocol feature 'GET_CODE_HASH' (with digest of '960f851f3e2e96acf5bb2c79ac0522a7552c721b6e88a63a24bcf27970d620c5') to: /app/nodes/ralf/protocol_features/BUILTIN-GET_CODE_HASH.json
info 2022-07-09T07:47:04.093 nodeos chain_plugin.cpp:462 operator() ] Support for builtin protocol feature 'BLOCKCHAIN_PARAMETERS' (with digest of '8e466518f3e16a679ffa80d2e810e4097e89b0495ed70c112375a1f525093f33') is enabled with preactivation required
info 2022-07-09T07:47:04.094 nodeos chain_plugin.cpp:571 operator() ] Saved default specification for builtin protocol feature 'BLOCKCHAIN_PARAMETERS' (with digest of '8e466518f3e16a679ffa80d2e810e4097e89b0495ed70c112375a1f525093f33') to: /app/nodes/ralf/protocol_features/BUILTIN-BLOCKCHAIN_PARAMETERS.json
info 2022-07-09T07:47:04.094 nodeos chain_plugin.cpp:462 operator() ] Support for builtin protocol feature 'CONFIGURABLE_WASM_LIMITS2' (with digest of '29a255f3e311c053847e027d352c06c77dfa9648fd8fd5dc8f629e3efffc2109') is enabled with preactivation required
info 2022-07-09T07:47:04.097 nodeos chain_plugin.cpp:571 operator() ] Saved default specification for builtin protocol feature 'CONFIGURABLE_WASM_LIMITS2' (with digest of '29a255f3e311c053847e027d352c06c77dfa9648fd8fd5dc8f629e3efffc2109') to: /app/nodes/ralf/protocol_features/BUILTIN-CONFIGURABLE_WASM_LIMITS2.json
info 2022-07-09T07:47:04.097 nodeos chain_plugin.cpp:462 operator() ] Support for builtin protocol feature 'ACTION_RETURN_VALUE' (with digest of 'c3a6138c5061cf291310887c0b5c71fcaffeab90d5deb50d3b9e687cead45071') is enabled with preactivation required
info 2022-07-09T07:47:04.097 nodeos chain_plugin.cpp:571 operator() ] Saved default specification for builtin protocol feature 'ACTION_RETURN_VALUE' (with digest of 'c3a6138c5061cf291310887c0b5c71fcaffeab90d5deb50d3b9e687cead45071') to: /app/nodes/ralf/protocol_features/BUILTIN-ACTION_RETURN_VALUE.json
info 2022-07-09T07:47:04.097 nodeos chain_plugin.cpp:462 operator() ] Support for builtin protocol feature 'WTMSIG_BLOCK_SIGNATURES' (with digest of '299dcb6af692324b899b39f16d5a530a33062804e41f09dc97e9f156b4476707') is enabled with preactivation required
info 2022-07-09T07:47:04.097 nodeos chain_plugin.cpp:571 operator() ] Saved default specification for builtin protocol feature 'WTMSIG_BLOCK_SIGNATURES' (with digest of '299dcb6af692324b899b39f16d5a530a33062804e41f09dc97e9f156b4476707') to: /app/nodes/ralf/protocol_features/BUILTIN-WTMSIG_BLOCK_SIGNATURES.json
info 2022-07-09T07:47:04.097 nodeos chain_plugin.cpp:462 operator() ] Support for builtin protocol feature 'WEBAUTHN_KEY' (with digest of '4fca8bd82bbd181e714e283f83e1b45d95ca5af40fb89ad3977b653c448f78c2') is enabled with preactivation required
info 2022-07-09T07:47:04.098 nodeos chain_plugin.cpp:571 operator() ] Saved default specification for builtin protocol feature 'WEBAUTHN_KEY' (with digest of '4fca8bd82bbd181e714e283f83e1b45d95ca5af40fb89ad3977b653c448f78c2') to: /app/nodes/ralf/protocol_features/BUILTIN-WEBAUTHN_KEY.json
info 2022-07-09T07:47:04.098 nodeos chain_plugin.cpp:462 operator() ] Support for builtin protocol feature 'RAM_RESTRICTIONS' (with digest of '4e7bf348da00a945489b2a681749eb56f5de00b900014e137ddae39f48f69d67') is enabled with preactivation required
info 2022-07-09T07:47:04.098 nodeos chain_plugin.cpp:571 operator() ] Saved default specification for builtin protocol feature 'RAM_RESTRICTIONS' (with digest of '4e7bf348da00a945489b2a681749eb56f5de00b900014e137ddae39f48f69d67') to: /app/nodes/ralf/protocol_features/BUILTIN-RAM_RESTRICTIONS.json
info 2022-07-09T07:47:04.099 nodeos chain_plugin.cpp:462 operator() ] Support for builtin protocol feature 'GET_SENDER' (with digest of 'f0af56d2c5a48d60a4a5b5c903edfb7db3a736a94ed589d0b797df33ff9d3e1d') is enabled with preactivation required
info 2022-07-09T07:47:04.099 nodeos chain_plugin.cpp:571 operator() ] Saved default specification for builtin protocol feature 'GET_SENDER' (with digest of 'f0af56d2c5a48d60a4a5b5c903edfb7db3a736a94ed589d0b797df33ff9d3e1d') to: /app/nodes/ralf/protocol_features/BUILTIN-GET_SENDER.json
info 2022-07-09T07:47:04.099 nodeos chain_plugin.cpp:462 operator() ] Support for builtin protocol feature 'FORWARD_SETCODE' (with digest of '2652f5f96006294109b3dd0bbde63693f55324af452b799ee137a81a905eed25') is enabled with preactivation required
info 2022-07-09T07:47:04.099 nodeos chain_plugin.cpp:571 operator() ] Saved default specification for builtin protocol feature 'FORWARD_SETCODE' (with digest of '2652f5f96006294109b3dd0bbde63693f55324af452b799ee137a81a905eed25') to: /app/nodes/ralf/protocol_features/BUILTIN-FORWARD_SETCODE.json
info 2022-07-09T07:47:04.099 nodeos chain_plugin.cpp:462 operator() ] Support for builtin protocol feature 'ONLY_BILL_FIRST_AUTHORIZER' (with digest of '8ba52fe7a3956c5cd3a656a3174b931d3bb2abb45578befc59f283ecd816a405') is enabled with preactivation required
info 2022-07-09T07:47:04.099 nodeos chain_plugin.cpp:571 operator() ] Saved default specification for builtin protocol feature 'ONLY_BILL_FIRST_AUTHORIZER' (with digest of '8ba52fe7a3956c5cd3a656a3174b931d3bb2abb45578befc59f283ecd816a405') to: /app/nodes/ralf/protocol_features/BUILTIN-ONLY_BILL_FIRST_AUTHORIZER.json
info 2022-07-09T07:47:04.100 nodeos chain_plugin.cpp:462 operator() ] Support for builtin protocol feature 'RESTRICT_ACTION_TO_SELF' (with digest of 'ad9e3d8f650687709fd68f4b90b41f7d825a365b02c23a636cef88ac2ac00c43') is enabled with preactivation required
info 2022-07-09T07:47:04.100 nodeos chain_plugin.cpp:571 operator() ] Saved default specification for builtin protocol feature 'RESTRICT_ACTION_TO_SELF' (with digest of 'ad9e3d8f650687709fd68f4b90b41f7d825a365b02c23a636cef88ac2ac00c43') to: /app/nodes/ralf/protocol_features/BUILTIN-RESTRICT_ACTION_TO_SELF.json
info 2022-07-09T07:47:04.100 nodeos chain_plugin.cpp:462 operator() ] Support for builtin protocol feature 'DISALLOW_EMPTY_PRODUCER_SCHEDULE' (with digest of '68dcaa34c0517d19666e6b33add67351d8c5f69e999ca1e37931bc410a297428') is enabled with preactivation required
info 2022-07-09T07:47:04.100 nodeos chain_plugin.cpp:571 operator() ] Saved default specification for builtin protocol feature 'DISALLOW_EMPTY_PRODUCER_SCHEDULE' (with digest of '68dcaa34c0517d19666e6b33add67351d8c5f69e999ca1e37931bc410a297428') to: /app/nodes/ralf/protocol_features/BUILTIN-DISALLOW_EMPTY_PRODUCER_SCHEDULE.json
info 2022-07-09T07:47:04.100 nodeos chain_plugin.cpp:462 operator() ] Support for builtin protocol feature 'FIX_LINKAUTH_RESTRICTION' (with digest of 'e0fb64b1085cc5538970158d05a009c24e276fb94e1a0bf6a528b48fbc4ff526') is enabled with preactivation required
info 2022-07-09T07:47:04.101 nodeos chain_plugin.cpp:571 operator() ] Saved default specification for builtin protocol feature 'FIX_LINKAUTH_RESTRICTION' (with digest of 'e0fb64b1085cc5538970158d05a009c24e276fb94e1a0bf6a528b48fbc4ff526') to: /app/nodes/ralf/protocol_features/BUILTIN-FIX_LINKAUTH_RESTRICTION.json
info 2022-07-09T07:47:04.101 nodeos chain_plugin.cpp:462 operator() ] Support for builtin protocol feature 'REPLACE_DEFERRED' (with digest of 'ef43112c6543b88db2283a2e077278c315ae2c84719a8b25f25cc88565fbea99') is enabled with preactivation required
info 2022-07-09T07:47:04.101 nodeos chain_plugin.cpp:571 operator() ] Saved default specification for builtin protocol feature 'REPLACE_DEFERRED' (with digest of 'ef43112c6543b88db2283a2e077278c315ae2c84719a8b25f25cc88565fbea99') to: /app/nodes/ralf/protocol_features/BUILTIN-REPLACE_DEFERRED.json
info 2022-07-09T07:47:04.101 nodeos chain_plugin.cpp:462 operator() ] Support for builtin protocol feature 'NO_DUPLICATE_DEFERRED_ID' (with digest of '4a90c00d55454dc5b059055ca213579c6ea856967712a56017487886a4d4cc0f') is enabled with preactivation required
info 2022-07-09T07:47:04.102 nodeos chain_plugin.cpp:571 operator() ] Saved default specification for builtin protocol feature 'NO_DUPLICATE_DEFERRED_ID' (with digest of '4a90c00d55454dc5b059055ca213579c6ea856967712a56017487886a4d4cc0f') to: /app/nodes/ralf/protocol_features/BUILTIN-NO_DUPLICATE_DEFERRED_ID.json
info 2022-07-09T07:47:04.102 nodeos chain_plugin.cpp:462 operator() ] Support for builtin protocol feature 'ONLY_LINK_TO_EXISTING_PERMISSION' (with digest of '1a99a59d87e06e09ec5b028a9cbb7749b4a5ad8819004365d02dc4379a8b7241') is enabled with preactivation required
info 2022-07-09T07:47:04.102 nodeos chain_plugin.cpp:571 operator() ] Saved default specification for builtin protocol feature 'ONLY_LINK_TO_EXISTING_PERMISSION' (with digest of '1a99a59d87e06e09ec5b028a9cbb7749b4a5ad8819004365d02dc4379a8b7241') to: /app/nodes/ralf/protocol_features/BUILTIN-ONLY_LINK_TO_EXISTING_PERMISSION.json
info 2022-07-09T07:47:04.102 nodeos chain_plugin.cpp:475 operator() ] Support for builtin protocol feature 'PREACTIVATE_FEATURE' (with digest of '0ec7e080177b2c02b278d5088611686b49d739925a92d9bfcacd7fc6b74053bd') is enabled without activation restrictions
info 2022-07-09T07:47:04.103 nodeos chain_plugin.cpp:571 operator() ] Saved default specification for builtin protocol feature 'PREACTIVATE_FEATURE' (with digest of '0ec7e080177b2c02b278d5088611686b49d739925a92d9bfcacd7fc6b74053bd') to: /app/nodes/ralf/protocol_features/BUILTIN-PREACTIVATE_FEATURE.json
info 2022-07-09T07:47:04.104 nodeos chain_plugin.cpp:1043 plugin_initialize ] Starting fresh blockchain state using default genesis state.
warn 2022-07-09T07:47:04.108 nodeos chain_plugin.cpp:1238 plugin_initialize ] 3070000 wasm_exception: WASM Exception
eos_vm_jit wasm runtime not supported on this platform and/or configuration
{"r":"eos_vm_jit"}
nodeos wasm_interface_private.hpp:79 wasm_interface_impl
Failed to initialize
Hi Guys,
Testing DUNE on Intel Mac 2019 and getting the following errors during chain setup.
dune --bootstrap-system Preactivate Features: {"code":500,"message":"Internal Service Error","error":{"code":3250000,"name":"protocol_feature_exception","what":"Protocol feature exception","details":[{"message":"protocol feature with digest '0ec7e080177b2c02b278d5088611686b49d739925a92d9bfcacd7fc6b74053bd' has already been activated","file":"controller.cpp","line_number":1901,"method":"check_protocol_features"}]}} error 2022-07-20T08:13:27.834 cleos main.cpp:4121 operator() ] Failed with error: 0 exception: unspecified Unable to resolve path '/home/www-data/mandel-contracts/build/contracts/eosio.boot' {"path":"/home/www-data/mandel-contracts/build/contracts/eosio.boot","exception":"Dynamic exception type: boost::filesystem::filesystem_error\nstd::exception::what: boost::filesystem::canonical: No such file or directory: \"/home/www-data/mandel-contracts/build/contracts/eosio.boot\"\n"} cleos filesystem.cpp:361 canonical
Checking the container, there is no 'mandel-contracts' directory:
www-data@a16fb3543669:~$ ls -lah total 32K drwxr-xr-x 1 www-data www-data 4.0K Jul 18 04:06 . drwxr-xr-x 1 root root 4.0K Jul 18 04:02 .. -rw-r--r-- 1 www-data www-data 49 Jul 19 13:11 .dune.ctx -rw-r--r-- 1 www-data www-data 621 Jul 18 04:02 config.ini drwxr-xr-x 2 www-data www-data 4.0K Jul 19 13:11 eosio-wallet drwxr-xr-x 1 www-data www-data 4.0K Jul 18 04:04 nodes -rw-r--r-- 1 www-data www-data 0 Jul 19 13:11 test1.out
I'm also receiving an error when trying to use the wallet.
Error 3120006: No available wallet Ensure that you have created a wallet and have it open Error Details: You don't have any wallet!
This is coming together, and I can see where it is going! Great stuff.
As always open to feedback
still can't figure our why nodeos isn't accepting connection on my setup, but these updates may help me with diagnostics
DUNE
needs to pass any arguments to individual programs. For example, in the following command:
dune --cmake-build ./src -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=On -VV
we want to pass -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=On -VV
to CMake.
Currently DUNE
treats them as its own arguments, not cmake-build
's; and will go ahead to parse them and fail.
After we have the new dev packages ready for Mandel we need to run through some manual tests of building mandel-contracts with tests and run the new 'ctest' and 'gdb' commands.
A minor report about the "bootstrap.sh" file in arm64 branch. I found it doesn't have execute permission. I think it might be better to grant the permission if it is not intended.
And thank you for the 3.1.0-rc2 updates! But I found the arm64 branch is not updated yet.
Let me continue my testing later. :)
Dune needs 3 updates to work with MacOS/Darwin. Ok to put these together as a pull request? Feedback welcome.
Issue overview:
Running the following command produces the following error:
dune --create-cmake-app hello ./
/host/home/USER/Workspaces path not found
Internal Error
Based on the empty /host/home
directory in the container, Docker may not allow directly mounting the /
directory.
Expected Behavior:
Dune should create a new project directory hello
with an example contract, readme, and cmake.
Steps to reproduce:
docker-desktop-4.10.1-amd64.deb
sudo apt-get install -y python3
git clone https://github.com/NatPDeveloper/DUNE --recursive
export PATH=/home/USER/Workspaces/DUNE/dune:$PATH
./bootstrap.sh
cd ../
back to workspaces folderdune --create-cmake-app hello ./
Additional Details:
/host/home
directory:www-data@62093f112abb:/host/home$ ls -a
. ..
docker inspect -f '{{ .Mounts }}' 62093f112abb
[{bind / /host true rslave}]
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04 LTS
Release: 22.04
Codename: jammy
docker version
Client: Docker Engine - Community
Cloud integration: v1.0.24
Version: 20.10.17
API version: 1.41
Go version: go1.17.11
Git commit: 100c701
Built: Mon Jun 6 23:02:46 2022
OS/Arch: linux/amd64
Context: desktop-linux
Experimental: true
Server: Docker Desktop 4.10.1 (82475)
Engine:
Version: 20.10.17
API version: 1.41 (minimum version 1.12)
Go version: go1.17.11
Git commit: a89b842
Built: Mon Jun 6 23:01:23 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.6
GitCommit: 10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
runc:
Version: 1.1.2
GitCommit: v1.1.2-0-ga916309
docker-init:
Version: 0.19.0
GitCommit: de40ad0
python3
Python 3.10.4 (main, Jun 29 2022, 12:14:53) [GCC 11.2.0] on linux
Also issue on mac. https://t.me/c/1139062279/311717
$ dune --start test_node
:
:
warn 2022-07-08T12:58:06.514 nodeos chain_plugin.cpp:1238 plugin_initialize ] 3070000 wasm_exception: WASM Exception
eos_vm_jit wasm runtime not supported on this platform and/or configuration
{"r":"eos_vm_jit"}
nodeos wasm_interface_private.hpp:79 wasm_interface_impl
error 2022-07-08T12:58:06.514 nodeos main.cpp:150 main ] 3070000 wasm_exception: WASM Exception
eos_vm_jit wasm runtime not supported on this platform and/or configuration
{"r":"eos_vm_jit"}
nodeos wasm_interface_private.hpp:79 wasm_interface_impl
rethrow
{}
nodeos chain_plugin.cpp:1238 plugin_initialize
Is "eos_vm_jit" supporting the arm64 platform?
Any idea how to solve this error?
Found a wallet issue when creating an account.
$ dune --start test_node
Creating docker container [dune_container]
Creating node [test_node]
Using Configuration [/home/www-data/config.ini]
$ dune --create-account nodeone
Creating account [nodeone] with key pair [Private: 5K4GCQPREhc6HmJ2wWNqRHvVNSL1bZ79hu8grtmkUhGJcndUfMg, Public: EOS8DMcuK28sN7jw8Uj5gEKtH8JxdbhovhVkDaUoQAemo49RBse97]
Error 3120006: No available wallet
Ensure that you have created a wallet and have it open
Error Details:
You don't have any wallet!
Stack Trace:
wallet_manager.cpp:140 get_public_keys
In my analysis, this is caused by the script setup_system.sh which creates wallet run as root permission by the Dockerfile, and eosio-wallet is generated under /root.
But the dune script is running as the user www-data so that it is trying to find default.wallet from /home/www-data.
This is the wallet location just after run the bootstrap.sh and create the container.
$ docker exec -u root -it dune_container ls -alh /root/eosio-wallet
total 16K
drwxr-xr-x 2 root root 4.0K Jul 15 12:48 .
drwx------ 1 root root 4.0K Jul 15 12:48 ..
-rw-r--r-- 1 root root 2.9K Jul 15 12:48 config.ini
-rw------- 1 root root 311 Jul 15 12:48 default.wallet
-rw-r--r-- 1 root root 0 Jul 15 12:48 wallet.lock
$ docker exec -u root -it dune_container ls -alh /home/www-data
total 16K
drwxr-xr-x 1 www-data www-data 4.0K Jul 15 12:49 .
drwxr-xr-x 1 root root 4.0K Jul 15 12:49 ..
-rw-r--r-- 1 www-data www-data 621 Jul 15 12:49 config.ini
drwxr-xr-x 2 www-data www-data 4.0K Jul 15 12:49 nodes
I tried to make a PR but it looks a bit complex as a user that it may related to permission issue and other features such as export/import wallet.
so I'm just leaving commands for somebody who need a simple workaround as below. You can run it just after bootstrap.sh completed.
$ dune --create-account <username> # this will fail but generate eosio-wallet structure under /home/www-data.
$ docker exec -u root -it dune_container cp /root/eosio-wallet/default.wallet /home/www-data/eosio-wallet/
$ docker exec -u root -it dune_container chown www-data:www-data /home/www-data/eosio-wallet/default.wallet
Thanks.
We still need to change over to developer packages of mandel when those are produced and placed in a stable location.
While troubleshooting issue #21 and testing scripts on Windows it appears that bootstrap step of setting up the environment errors out.
=> [ 2/19] RUN apt-get update 16.9s
=> [ 3/19] RUN apt-get update --fix-missing 1.8s
=> [ 4/19] RUN DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get -y install tzdata 2.8s
=> [ 5/19] RUN apt-get -y install zip unzip libncurses5 wget git build-essential cmake curl libboost-all-dev l 318.6s
=> [ 6/19] RUN npm install -D webpack-cli 5.6s
=> [ 7/19] RUN npm install -D webpack 11.5s
=> [ 8/19] RUN npm install -D webpack-dev-server 18.1s
=> [ 9/19] WORKDIR /app 0.0s
=> [10/19] COPY ./scripts/ . 0.0s
=> [11/19] RUN chmod +x bootstrap_env.sh 0.4s
=> [12/19] RUN chmod +x start_node.sh 0.5s
=> [13/19] RUN chmod +x setup_system.sh 0.5s
=> [14/19] RUN chmod +x write_context.sh 0.6s
=> [15/19] RUN mv my_init /sbin 0.5s
=> [16/19] RUN ./bootstrap_env.sh 102.1s
=> [17/19] RUN ./setup_system.sh 0.5s
=> ERROR [18/19] RUN mkdir /home/www-data/nodes 0.6s
[18/19] RUN mkdir /home/www-data/nodes:
#26 0.572 mkdir: cannot create directory '/home/www-data/nodes': No such file or directory
executor failed running [/bin/sh -c mkdir /home/www-data/nodes]: exit code: 1
Setup:
Here is one caveat - for some reason, if you install python from the Python website and add it to path, dune has trouble finding it:
Microsoft Windows [Version 10.0.19044.1889]
(c) Microsoft Corporation. All rights reserved.
C:\Users\valter>dune
Python was not found; run without arguments to install from the Microsoft Store, or disable this shortcut from Settings > Manage App Execution Aliases.
C:\Users\valter>python
Python 3.10.4 (tags/v3.10.4:9d38120, Mar 23 2022, 23:13:41) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
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.