Giter Club home page Giter Club logo

arduino-cli's Introduction

arduino-cli

cli-logo

Arduino CLI is an all-in-one solution that provides Boards/Library Managers, sketch builder, board detection, uploader, and many other tools needed to use any Arduino compatible board and platform from command line or machine interfaces.

Test Go status Publish Nightly Build status Deploy Website status Codecov

Docs

For guidance on installation and development, see the User documentation.

Quickstart

  1. Install the Arduino CLI
  2. Follow the Getting Started guide to check out what the CLI can do
  3. Browse the Commands reference to see all the available commands
  4. Should you have an issue, read the FAQ page

How to contribute

Contributions are welcome!

Please read the document How to contribute which will show you how to build the source code, run the tests, and contribute your changes to the project.

โœจ Thanks to all our contributors! โœจ

Testing builds

Nightly builds are available for testing.

Security

If you think you found a vulnerability or other security-related bug in the Arduino CLI, please read our security policy and report the bug to our Security Team ๐Ÿ›ก๏ธ Thank you!

e-mail contact: [email protected]

License

Arduino CLI is licensed under the GPL 3.0 license.

You can be released from the requirements of the above license by purchasing a commercial license. Buying such a license is mandatory if you want to modify or otherwise use the software for commercial activities involving the Arduino software without disclosing the source code of your own applications. To purchase a commercial license, send an email to [email protected]

arduino-cli's People

Contributors

alessio-perugini avatar alranel avatar ardnew avatar bikappa avatar cmaglie avatar d-a-v avatar dependabot-preview[bot] avatar dependabot[bot] avatar facchinm avatar federicobond avatar github-actions[bot] avatar hdiniz avatar howjmay avatar kittaakos avatar lerg avatar lluiscampos avatar lorenzo-biava avatar manchoz avatar masci avatar mastrolinux avatar matteopologruto avatar matteosuppo avatar matthijskooijman avatar per1234 avatar phd avatar rocketct avatar rsora avatar saniales avatar silvanocerza avatar umbynos 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  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

arduino-cli's Issues

arduino-cli standalone install looks for .cli-config.yml in wrong location

arduino-cli standalone install looks for .cli-config.yml in wrong location

arduino-cli looks for .cli-config.yml in wrong location when installing a standalone arduino-cli binary into /usr/bin/
In the above case it looks for /usr/bin/.cli-config.yml - and does not even try to look inside my home dir

See the debug output:

# arduino-cli board listall --debug
INFO[0000] Initiating configuration                     
INFO[0000] Unserializing configurations from /usr/bin/.cli-config.yml 
WARN[0000] Error reading config, using default configuration  error="open /usr/bin/.cli-config.yml: no such file or directory"
WARN[0000] Did not manage to get config file, using default configuration  error="open /usr/bin/.cli-config.yml: no such file or directory"
INFO[0000] Checking if CLI is Bundled into the IDE      
INFO[0000] Candidate IDE Directory: /usr/bin            
INFO[0000] CLI is not bundled into the IDE              
INFO[0000] Configuration set                            
INFO[0000] Starting root command preparation (`arduino`) 
INFO[0000] Formatter set                                
INFO[0000] Loading the default Package index            
Board Name	FQBN

Simplify and add shortcuts for core workflow

The core workflow needs some simplification of its commands with some config additions. I apologize if these are already in the pipeline.

The core workflow for most sketches is something like this:

  1. create sketch
  2. edit sketch
  3. choose board
  4. choose port
  5. verify and upload sketch to board

1, 2, and 4 are generally once-per-sketch tasks, while 2 and 5 are generally done repeatedly.

Right now, it looks like this:

$ arduino-cli sketch new cliSketch
$ open ~/Documents/Arduino/cliSketch/cliSketch.ino  # open is a placeholder for your favorite editor
$ arduino-cli board list
$ arduino-cli  board attach /dev/cu.usbmodem14121 cliSketch/cliSketch.ino
$arduino-cli compile --fqbn arduino:avr:uno ~/Documents/Arduino/cliSketch/
$ arduino-cli upload --fqbn arduino:avr:uno -p /dev/cu.usbmodem14121 ~/Documents/Arduino/cliSketch2/

This can get shorter if you use the menus from the GUI as a guide (loosely), and use some shortcut names. For example:

$ arduino-cli sketch new cliSketch should set the current working directory for the cli, so that cliSketch is auto-expanded in any command that uses it. shortcut: s -n

$ arduino-cli sketch with no parameters could list the current sketch and CWD

$ arduino-cli port set /dev/cu.usbmodem14121 could set the working port for the cli, or for this sketch Follows the tools --> port menu behavior shortcut p -s

$ arduino-cli port with no parameters could list the current port

$ arduino-cli board set arduino:avr:uno could set the working board for the cli or for this sketch. Follows the tools --> board menu behavior. Shortcut: b -s.

$ arduino-cli board with no parameters could list the current board

$ arduino-cli verify, with the current working directory set, could mirror the action of the current sketch --> verify/Compile, and be an alias for compile

$ arduino-cli upload, with the current working directory, board, and port set could mirror the action of the current sketch --> verify and upload

If either verify or upload are called without board or port set, the cli should generate an appropriate error of course.

Can't compile for Nano

Unable to compile for Nano. The arduino:avr core is installed. I've been able to compile for other boards included in the arduino:avr core.


nkieffer@cmis-nkieffer ~/Arduino $ arduino-cli core list
ID Installed Latest Name
arduino:avr 1.6.21 1.6.21 Arduino AVR Boards

nkieffer@cmis-nkieffer ~/Arduino $ arduino-cli compile --fqbn arduino:avr:nano Sweep/
avr-g++: error: missing device or architecture after '-mmcu='
Error: exit status 1
Compilation failed.

nkieffer@cmis-nkieffer ~/Arduino $ arduino-cli compile --fqbn arduino:avr:uno Sweep
Build options changed, rebuilding all
Alternatives for Servo.h: [[email protected]]
ResolveLibrary(Servo.h)
-> candidates: [[email protected]]
Sketch uses 2158 bytes (6%) of program storage space. Maximum is 32256 bytes.
Global variables use 52 bytes (2%) of dynamic memory, leaving 1996 bytes for local variables. Maximum is 2048 bytes.

Incompatible architecture warning uses incorrect library name

Using Arduino IDE 1.9.0 Beta build 58 and Arduino IDE 1.8.6 Hourly Build 2018-05-15 10:41

  1. File > Preferences > Show verbose output during: > compilation (check) > OK
  2. Tools > Board > Arduino/Genuino Zero
  3. Compile the following sketch:
    #include <ArduinoRobotMotorBoard.h>
    void setup() {}
    void loop() {}

The console displays the following warning:

WARNING: library Robot_Motor claims to run on (avr) architecture(s) and may be incompatible with your current board which runs on (samd) architecture(s).

and

Compiling library "Robot_Motor"

and

Using library Robot_Motor at version 1.0.3 in folder: C:\Program Files (x86)\ArduinoIDE\arduino-PR-beta1.9-BUILD-58\libraries\Robot_Motor 

But the name value defined in library.properties for this library is Robot Motor. The "Robot_Motor" in the warning is the library folder name.

I realize the difference between the two is not very dramatic in this demonstration. I chose this library because Robot Motor library is bundled with the Arduino IDE so it provides a minimal demonstration of the issue. The issue is more noticeable with other libraries where the folder name differs more significantly from the name value.

The Arduino IDE uses the name value whenever referring to a library (including the invalid category warning shown in the console) so this causes an inconsistent user experience.

Two of these messages are already using information from library.properties so I can't imagine it would be too difficult to use the name value as well (falling back on the folder name when a library.properties file is absent).

'core list' doesn't work if a core is installed in sketchbook/hardware folder

for example:

$ arduino-cli core --debug list
INFO[0000] Initiating configuration
INFO[0000] Unserializing configurations from /usr/local/bin/.cli-config.yml
WARN[0000] Error reading config, using default configuration  error="open /usr/local/bin/.cli-config.yml: no such file or directory"
WARN[0000] Did not manage to get config file, using default configuration  error="open /usr/local/bin/.cli-config.yml: no such file or directory"
INFO[0000] Checking if CLI is Bundled into the IDE
INFO[0000] Candidate IDE Directory: /usr/local/bin
INFO[0000] CLI is not bundled into the IDE
INFO[0000] Configuration set
INFO[0000] Starting root command preparation (`arduino`)
INFO[0000] Formatter set
INFO[0000] Executing `arduino core list`
INFO[0000] Loading the default Package index
INFO[0000] Loading hardware from: /Users/mancho/Library/arduino15/packages
INFO[0000] Loading package arduino from: /Users/mancho/Library/arduino15/packages/arduino/hardware
INFO[0000] Loaded platform                               platform="arduino:[email protected]"
INFO[0000] Loaded platform                               platform="arduino:[email protected]"
INFO[0000] Loaded platform                               platform="arduino:[email protected]"
INFO[0000] Checking existence of 'tools' path: /Users/mancho/Library/arduino15/packages/arduino/tools
INFO[0000] Loading tools from dir: /Users/mancho/Library/arduino15/packages/arduino/tools
INFO[0000] Loaded tool                                   tool="arduino:[email protected]"
INFO[0000] Loaded tool                                   tool="arduino:[email protected]"
INFO[0000] Loaded tool                                   tool="arduino:[email protected]"
INFO[0000] Loaded tool                                   tool="arduino:[email protected]"
INFO[0000] Loaded tool                                   tool="arduino:[email protected]"
INFO[0000] Loaded tool                                   tool="arduino:[email protected]"
INFO[0000] Loaded tool                                   tool="arduino:arm-none-eabi-gcc@7-2017q4"
INFO[0000] Loaded tool                                   tool="arduino:[email protected]"
INFO[0000] Loaded tool                                   tool="arduino:[email protected]"
INFO[0000] Loaded tool                                   tool="arduino:[email protected]"
INFO[0000] Loaded tool                                   tool="arduino:[email protected]"
INFO[0000] Loaded tool                                   tool="arduino:[email protected]"
INFO[0000] Loaded tool                                   tool="arduino:[email protected]"
INFO[0000] Loading package builtin from: /Users/mancho/Library/arduino15/packages/builtin
INFO[0000] Checking existence of 'tools' path: /Users/mancho/Library/arduino15/packages/builtin/tools
INFO[0000] Loading tools from dir: /Users/mancho/Library/arduino15/packages/builtin/tools
INFO[0000] Loaded tool                                   tool="builtin:[email protected]"
INFO[0000] Loading hardware from: /Users/mancho/Documents/Arduino/hardware
INFO[0000] Loading package arduino-new from: /Users/mancho/Documents/Arduino/hardware/arduino-new
INFO[0000] Loaded platform                               platform="arduino-new:samd@"
INFO[0000] Loading package esp8266com from: /Users/mancho/Documents/Arduino/hardware/esp8266com
INFO[0000] Loaded platform                               platform="esp8266com:esp8266@"
INFO[0000] Loading package espressif from: /Users/mancho/Documents/Arduino/hardware/espressif
INFO[0000] Loaded platform                               platform="espressif:esp32@"
%!s(PANIC=runtime error: invalid memory address or nil pointer dereference)

Tests should be moved into the package being tested

This is the expected approach that allows (among the other things) to do proper coverage analisys.
Probably the current "Command containers" should be moved into separate packages for better isolation too.

feature request: add board name string to compile defines in platform.txt file

Currently there is a define for the board type -DARDUINO_{build.board} that is passed to the compiler.
But the actual name of the board as a string is not available.
There are some use cases in diagnostic tools where having the actual name of the board as a string can be useful as it can be used to display to the user.
The esp8266 core uses this define -DARDUINO_BOARD="{build.board}" in their platform.txt file.
It would be nice if the Arduino.cc provided cores supported a define that allowed the code to obtain a string version of the board name.
Since the name ARDUINO_BOARD is already used by the esp8266 core, perhaps the Arduino.cc cores could adopt the same thing.

Sketch-local libraries directory?

Hello,

I create some sketch for my Otto-robot. For this I use the Otto library. I want to use the Otto library only in the Otto project and want to commit it to the git repository.
Is there a possibility for a local library-directory, like libraries or lib inside the sketchbook directory?

I only discovered an libraries folder inside of the Arduino folder which seems to provide the library to all my arduino projects.

Greets

Florian

Not compatible with ArduinoCore-arc32

I'm testing out the CLI in Travis CI, it's working well with the AVR and SAMD cores. However, for arc32 and the Arduino 101 I get the following error while building:

$ buildExampleSketch CheckWifi101FirmwareVersion
Alternatives for SPI.h: [[email protected]]
ResolveLibrary(SPI.h)
  -> candidates: [[email protected]]
Alternatives for WiFi101.h: [[email protected]]
ResolveLibrary(WiFi101.h)
  -> candidates: [[email protected]]
In file included from /tmp/arduino-sketch-F9CB3999A80546D8E181C96DC53B4EB6/sketch/CheckWifi101FirmwareVersion.ino.cpp:1:0:
/home/travis/.arduino15/packages/Intel/hardware/arc32/2.0.2/cores/arduino/Arduino.h:35:2: error: #error IDE version incompatible with Arduino 101. Please upgrade to version 1.6.7 or newer.
 #error IDE version incompatible with Arduino 101. Please upgrade to version 1.6.7 or newer.
  ^

The core has the following check in Arduino.h:

#if ARDUINO < 10607
#error IDE version incompatible with Arduino 101. Please upgrade to version 1.6.7 or newer.
#endif

Should the CLI define ARDUINO for backwards compatibility purposes? @facchinm @cmaglie

Arduino nRF52 board from vendor velleman unkown board ?

does not know the arduino uno board from vendor velleman,

output From Arduino Ide :

Board Info:

BN: Arduino/Genuino Uno
VID: 2341
PID: 0043
SN: 856343138393515001E0

ouput from arduino-cli ( 64 bit linux , ubuntu 18.04 LTS ):

$ ./arduino-cli board list
FQBN    Port        	ID       	Board Name
    	/dev/ttyACM0	2341:0043	unknown   

so compile fails as well output :

$ ./arduino-cli compile --fqbn arduino:nrf52 /home/yellabs/Arduino/MySketch
Fully Qualified Board Name has incorrect format.

core files are present :

$ ./arduino-cli core list
ID                	Installed	Latest	Name                
arduino:nrf52     	1.0.2    	1.0.2 	Arduino nRF52 Boards
sandeepmistry:nRF5	0.5.1    	0.5.1 	                 

please take a look and see if you can give advise or fix

External Programmer Support

Hi.

First of all, I highly appreciate arduino-cli. It's a very, very big step forward in integrating into my development workflow, especially when you don't always have a graphical session running.
Not having Java around is a nice thing as well.

I do miss support for external programmers like a USBasp and friends, however.
While the Arduino bootloader is quite handy, sometimes it's not an option.

While I might have missed the option, I only saw the option to specify a port, not a programmer.

reducing arch specific #ifdefs in Firmata lib with better alignment across variant files

A few weeks ago in a discussion on the arduino dev mailing list, David Mellis asked if I could look into what it would take to reduce the number of architecture specific #ifdefs in the Firmata library (in the Boards.h file).

Here's an example from Boards.h so it's clear what I'm talking about (there are definitions like this for multiple architectures):

// Arduino Duemilanove, Diecimila, and NG
#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__)
#if defined(NUM_ANALOG_INPUTS) && NUM_ANALOG_INPUTS == 6
#define TOTAL_ANALOG_PINS       6
#define TOTAL_PINS              20 // 14 digital + 6 analog
#else
#define TOTAL_ANALOG_PINS       8
#define TOTAL_PINS              22 // 14 digital + 8 analog
#endif
#define VERSION_BLINK_PIN       13
#define IS_PIN_DIGITAL(p)       ((p) >= 2 && (p) <= 19)
#define IS_PIN_ANALOG(p)        ((p) >= 14 && (p) < 14 + TOTAL_ANALOG_PINS)
#define IS_PIN_PWM(p)           digitalPinHasPWM(p)
#define IS_PIN_SERVO(p)         (IS_PIN_DIGITAL(p) && (p) - 2 < MAX_SERVOS)
#define IS_PIN_I2C(p)           ((p) == 18 || (p) == 19)
#define IS_PIN_SPI(p)           ((p) == SS || (p) == MOSI || (p) == MISO || (p) == SCK)
#define PIN_TO_DIGITAL(p)       (p)
#define PIN_TO_ANALOG(p)        ((p) - 14)
#define PIN_TO_PWM(p)           PIN_TO_DIGITAL(p)
#define PIN_TO_SERVO(p)         ((p) - 2)
#define ARDUINO_PINOUT_OPTIMIZE 1

I can update IS_PIN_I2C(p) to use SDA and SCL for all variants. I can also up remove TOTLAL_ANALOG_PINS and TOTAL_PINS and use NUM_DIGITAL_PINS and NUM_ANALOG_PINS instead for all variants.

However there are some macros and constants that are not available across all arduino variant pins_arduino.h files:

The following macros and constants need to be added to the leonardo, robot_control, robot_motor and due variants (micro and yun would get this functionality as well since they simply import the leonardo variant):

analogInputToDigitalPin(p) ...
digitalPinHasPWM(p) ...
LED_BUILTIN

However in order to eliminate all architecture specific #ifdefs in Firmata/Boards.h for those boards that are defined in the arduino variants directory, I'd also have to figure out how to support the following macros (defined in Boards.h):

IS_PIN_ANALOG(p) 
IS_PIN_DIGITAL(p)
PIN_TO_ANALOG(p)  // would need something like digitalPinToAnalogPin(p)

I'm not sure if any other Arduino core libraries would benefit from these macros. If there is no use for them outside of Firmata, then it's probably better to keep the #ifdefs in Firmata/Boards.h. I can at least incorporate the new constants and macros as they're added to the variants.

Error compiling for --fqbn arduino:avr:mega (missing cpu flags)

Hi!

I have successfully installed Go compiler and Arduino CLI using this steps:

wget https://dl.google.com/go/go1.11.linux-armv6l.tar.gz

sudo tar -C /usr/local -xvf go1.11.linux-armv6l.tar.gz

cat >> ~/.bashrc << 'EOF'

export GOPATH=$HOME/go

export PATH=/usr/local/go/bin:$PATH:$GOPATH/bin

EOF

source ~/.bashrc

go version

result: go1.11 linux/arm

Then:

go get -u github.com/arduino/arduino-cli

Now following the https://github.com/arduino/arduino-cli#getting-started starts the problems.

arduino-cli sketch new MyFirstSketch

Returns:

 Error: mkdir /home/pi/Arduino/MyFirstSketch: permission denied
Could not create sketch directory.

So I tried using sudo the result is:

sudo: arduino-cli: command not found

To try solved this issue I have created the folder manually using

sudo mkdir -p /home/pi/Arduino/MyFirstSketch

On next step I could not download package_index.json due permissions error again.

So I did:

sudo mkdir -p /home/pi/.arduino15/

cd /home/pi/.arduino15/

wget https://downloads.arduino.cc/packages/package_index.json

After I have successfully installed AVR core using:

arduino-cli core install arduino:avr

The result for arduino-cli core list is:

ID Installed Latest Name
arduino:avr 1.6.21 1.6.21 Arduino AVR Boards

Now using arduino-cli board list the result is always:

FQBN Port ID Board Name
/dev/ttyUSB0 0403:6001 unknown

In this point I don't know what to do to go on since the CLI doesn't find a FQBN to my Arduino mega connected to USB port.

Can someone help please?

Best regards.

Build failed on macOS 10.13.6

Running the command go get -v -u github.com/arduino/arduino-cli/ with go version go1.11 darwin/amd64 throws

github.com/arduino/arduino-cli (download)
github.com/arduino/arduino-cli/vendor/go.bug.st/serial.v1/enumerator
# github.com/arduino/arduino-cli/vendor/go.bug.st/serial.v1/enumerator
../src/github.com/arduino/arduino-cli/vendor/go.bug.st/serial.v1/enumerator/usb_darwin.go:115:217: cannot use matcher (type _Ctype_CFMutableDictionaryRef) as type _Ctype_CFDictionaryRef in argument to func literal

arm-none-eabi on windows

C:\Users\David>arduino-cli core install arduino:samd
The tool arduino:[email protected] is not available for the current OS

How does the regular IDE install arm-none-eabi-gcc?

As a workaround, I think that the cli should look in AppData\Local\Arduino15\packages\arduino\tools\arm-none-eabi-gcc\ (or at least some user-specified directory) because that contains windows executables for the arm-none-eabi toolchain.

Could not load libraries with invalid (non-semver) version

$ arduino-cli lib install Audio
Error: loading libs from /home/cmaglie/Workspace/sketchbook-cores-beta/libraries: loading library from /home/cmaglie/Workspace/sketchbook-cores-beta/libraries/xbee_serial_array-master: invalid version 0.9a: invalid minor version separator 'a'
Error during libraries rescan

arduino-cli on OSX doesn't create arduino15 folder

I have downloaded the arduino-cli binary, installed in /usr/local/bin/.
When I run arduino-cli core update-index for the first time I get

Updating index: package_index.json downloaded
Error: open /Users/fabio/Library/arduino15/package_index.json: no such file or directory
Error saving downloaded index https://downloads.arduino.cc/packages/package_index.json

So I manually create the folder:

mkdir /Users/fabio/Library/arduino15

and the issue is solved.
I don't know if the documentation should indicate to the user to create the directory or the tool should create it.
I am willing to help patch the sources if the tool should create the directory.

Preprocessing generates inline comments

I'm trying to use the new CLI as just a preprocessor just to get the *.cpp output. I took the standard Blink.ino app and ran ./arduino-cli-osx compile -b arduino:sam:arduino_due_x --preprocess --build-path ~/code ./Blink/Blink.ino. I do indeed get a *.cpp but it includes auto-generated comments. Is there a turn these off? See below:

#include <Arduino.h>
#line 1 "/Users/jberi/downloads/Blink/Blink.ino"
#line 1 "/Users/jberi/downloads/Blink/Blink.ino"
/*
  Blink

  Turns an LED on for one second, then off for one second, repeatedly.

  Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
  it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
  the correct LED pin independent of which board is used.
  If you want to know what pin the on-board LED is connected to on your Arduino
  model, check the Technical Specs of your board at:
  https://www.arduino.cc/en/Main/Products

  modified 8 May 2014
  by Scott Fitzgerald
  modified 2 Sep 2016
  by Arturo Guadalupi
  modified 8 Sep 2016
  by Colby Newman

  This example code is in the public domain.

  http://www.arduino.cc/en/Tutorial/Blink
*/

// the setup function runs once when you press reset or power the board
#line 26 "/Users/jberi/downloads/Blink/Blink.ino"
void setup();
#line 32 "/Users/jberi/downloads/Blink/Blink.ino"
void loop();
#line 26 "/Users/jberi/downloads/Blink/Blink.ino"
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

boards.txt can not control "build.warn_data_percentage" setting

Normally boards.txt can control settings as needed for each individual board. However, "build.warn_data_percentage" can not be customized. The default 75 setting is appropriate for small memory boards, but causes needless (and alarming) warnings on boards with much more memory.

To reproduce this problem, add this line to boards.txt:

uno.build.warn_data_percentage=80

Then compile this sketch for Arduino/Genuino Uno

volatile char bigbuf[1536];
void setup() {
  bigbuf[0] = 0;
}
void loop() {
}

The 80% setting line will be ignored and Arduino will print the warning "Low memory available, stability problems may occur."

The problem seems to be on line 236 in Compiler.java:
https://github.com/arduino/Arduino/blob/master/arduino-core/src/cc/arduino/Compiler.java#L236

    commandLine.addArgument("-prefs=build.warn_data_percentage=" + PreferencesData.get("build.warn_data_percentage"));

This gives the builder an explicit override, causing it to ignore any setting that may be present in boards.txt.

DATADIR (~/.arduino15 or equivalent) is not created automatically

Arduino-cli appears to assume the IDE exists, and doesn't always handle the lack cleanly.

Example (release binary arduino-cli-0.2.0-alpha.preview-osx):

$ arduino-cli board listall
Error: loading json index file /Users/soneil/Library/arduino15/package_index.json: open /Users/soneil/Library/arduino15/package_index.json: no such file or directory
Failed to load https://downloads.arduino.cc/packages/package_index.json package index.
Try updating all indexes with `arduino-cli core update-index`.

$ arduino-cli core update-index
Updating index: package_index.json downloaded
Error: open /Users/soneil/Library/arduino15/package_index.json: no such file or directory
Error saving downloaded index https://downloads.arduino.cc/packages/package_index.json

In this case, ~/Library/arduino15 is assumed to exist, and is not created if it doesn't. Manually creating ~/Library/arduino15 allows update-index to complete cleanly.

Use default FQBN options if not specified

For example in #17 and #23 is not immediately clear that

arduino:avr:mega requires the extra option: arduino:avr:mega:cpu=atmega2560

At least we should allow to write arduino:avr:mega for the default settings.

arduino-cli core install arduino:avr failing on Windows 10

Operating System:

Edition: Windows 10 Enterprise
Version: 1709
OS Build: 16299.611
System Type: 64-bit operating system, x64-based processor

I have issued the following command:

arduino-cli-0.2.0-alpha.preview-windows.exe core install arduino:avr

and got this message:

The tool arduino:[email protected] is not available for the current OS

this prevents me to use the arduino-cli on my Windows system

Same command issued on Linux system (on same machine) works properly

Support bundling libraries with a sketch

Describe the request

๐Ÿ™‚ It will be easier for sketch developers to share a sketch as a package that includes library dependencies, avoiding the need for each user to install the library dependencies.
๐Ÿ™‚ Library dependencies of the sketch can be controlled, allowing them to be pinned to the specific versions the sketch was intended to be used with, independent from the version of any globally installations of the library. As an example there are major changes to the API of the very popular "ArduinoJson" library in version 6 and sketches only work with one or the other major version series of that dependency.

Describe the current behavior

The common approach to bundling libraries with a sketch is to dump the library code files into the sketch root folder.

Arduino CLI version

a58d5ad

Operating system

All

Operating system version

All

Additional context

  1. As a workaround in the preferences the sketchbook location (directories.user) can be set to the sketch folder. But this has to be done manually and changed every time another program is handled. So there could be some option for this to be set in the .ino file.
  2. In the build folder a file build.options.json is generated automatically.
    There are some options where additional library folders could possibly be added?
    E.g.:
    • builtInLibrariesFolders
    • otherLibrariesFolders

Additional Requests

Issue checklist

  • I searched for previous requests in the issue tracker
  • I verified the feature was still missing when using the latest nightly build
  • My request contains all necessary details

Previous file persists in build folder after renaming non-`.ino` sketch code file

Describe the problem

The previous file persists in the sketch build folder after a sketch code file with extension other than .ino/.pde is renamed.

๐Ÿ› This can result in spurious compilation errors or confusing bugs. Arduino CLI users can work around the bug by adding the --clean flag to their command, but the only workaround for Arduino IDE users is to manually clean the build folder.

To reproduce

$ arduino-cli version

arduino-cli.exe  Version: git-snapshot Commit: a735ddfd Date: 2023-01-15T01:00:07Z

$ arduino-cli sketch new /tmp/FooSketch

$ echo "void asdf() {}" > /tmp/FooSketch/foo.cpp

$ arduino-cli compile --fqbn arduino:avr:uno /tmp/FooSketch

[...]

$ mv /tmp/FooSketch/foo.cpp /tmp/FooSketch/bar.cpp

$ arduino-cli compile --fqbn arduino:avr:uno /tmp/FooSketch

C:\Users\per\AppData\Local\Temp\arduino\sketch-2405C4C9F90028537C79B0744BCE536E\sketch\foo.cpp.o (symbol from plugin): In function `asdf()':
(.text+0x0): multiple definition of `asdf()'
C:\Users\per\AppData\Local\Temp\arduino\sketch-2405C4C9F90028537C79B0744BCE536E\sketch\bar.cpp.o (symbol from plugin):(.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status

Used platform Version Path
arduino:avr   1.8.6   C:\Users\per\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6

Error during build: exit status 1

$ ls "C:/Users/per/AppData/Local/Temp/arduino/sketch-2405C4C9F90028537C79B0744BCE536E/sketch"

bar.cpp  bar.cpp.d  bar.cpp.o  foo.cpp  foo.cpp.d  foo.cpp.o  FooSketch.ino.cpp  FooSketch.ino.cpp.d  FooSketch.ino.cpp.o

๐Ÿ› foo.cpp is still present in the build folder even though not present in the sketch. foo.cpp is compiled in addition to bar.cpp and the primary sketch file.

Expected behavior

Files are always removed from the sketch build folder when no longer present in the sketch.

Arduino CLI version

Original report

Arduino IDE 1.6.9

Last verified with

0.34.1

Operating system

  • Linux
  • Windows

Operating system version

  • Mint
  • 10

Additional context

Workaround

Arduino CLI users

Run an arduino-cli compile command with the --clean flag.

Arduino IDE users
  1. Examine the compiler error message. It will show the path of the temporary build folder.
    For example, in this error:
    C:\Users\per\AppData\Local\Temp\arduino\sketches\7930E8409AED6D4F4A4782CF985194E9\sketch\foo.cpp.o (symbol from plugin): In function `asdf()':
    (.text+0x0): multiple definition of `asdf()'
    C:\Users\per\AppData\Local\Temp\arduino\sketches\7930E8409AED6D4F4A4782CF985194E9\sketch\bar.cpp.o (symbol from plugin):(.text+0x0): first defined here
    collect2.exe: error: ld returned 1 exit status
    
    exit status 1
    
    Compilation error: exit status 1
    
    The temporary build folder is:
    C:\Users\per\AppData\Local\Temp\arduino\sketches\7930E8409AED6D4F4A4782CF985194E9\sketch\
    
  2. Delete the temporary build folder.

Additional reports

Keywords

  • rename
  • header
  • .h
  • .cpp
  • .c
  • C++

Issue checklist

  • I searched for previous reports in the issue tracker
  • I verified the problem still occurs when using the latest nightly build
  • My report contains all necessary details

Global system platform.txt

It would be nice to have a platform.txt that cannot be overwritten by the avr-core.
For example I need to change compiler.path={runtime.tools.avr-gcc.path}/bin/ to compiler.path=/usr/bin/. But I also need to add some extra cpp flags that are specific for the avr-gcc 6.x.

I am still not sure whats the best way to solve this, but if we can make the distribution avr-gcc packages more accessible its simpler to package arduino for linux and also especially for archlinux never avr-gcc can already be tested for bugs.

Allow storing libraries in subfolders of the libraries folder

I currently have well over a hundred libraries accumulated. I'm sure many active users have even more! It getting clumsy to sort thru them by eye! It would be very helpful if there was a way to have a hierarchical menu system so Libraries could be sorted into folders with meaningful names, and easier to find.

I suspect this might make it harder/slower for the libraries to be found by the IDE. But the the vast wealth of libraries available - it might be worth it!

Add shortcut for known ports

typing out board attach /dev/cu.usbmodem1421 mySketch could be simplified to board attach 0 mySketch would be one faster way. tab-autocomplete works, for now you could just add that to the readme.

third party HW support needs some debugging capabilities.

The third-party support (boards.txt, platforms.txt, variants, etc) needs some debugging output. Currently you can add a ~/Arduino/hardware/xxx/etc boards.txt file, and have none of the boards appear in the menus, and not have a clue as to why (or whether it even found your file(s).)

Perhaps console output, shift-startup, or a debug preference somewhere that at least shows which files were read, which boards/etc were added, and so on.

Incorrect "Sketch too big" error on insufficient Flash space when uploading using programmer

Given a sketch of compiled size X, where X by itself will fit into the flash of a given chip, but X plus the Arduino Bootloader will not. When using the regular "Upload" Button, the Arduino IDE correctly prints a warning about insufficient flash memory and aborts the upload process.

However, when using "Upload using Programmer" (precisely to use the extra space by getting rid of the bootloader), the Arduino IDE again prints this warning (this time incorrectly!) and aborts the upload process.

To resolve this issue, the IDE should take the upload method (Bootloader/Programmer) into account when computing the amount of flash available on the chip.

I verified this using Arduino 1.0.4 and Arduino 1.0.5, both times compiling for an ATmega8 ("Ardunio NG or older w/ATmega8").

Until this bug is resolved, I would also appreciate a hint on how to work around this issue (i.e., how to burn an "oversize" sketch with a programmer) in the meantime.

Attiny167 1MHz internal Clock not working on baud rate 9600

hello
I am using Attiny167 with arduino uno as a programmer.
I am using 1Mhz internal clock.
when I set baud rate 9600 in program Serial.begin(9600); on serial terminal I can not get exact value as i write
for Example : Serial.write(0xAB); but on terminal m getting : 6B 2B

But on terminal instead of 9600 if i give 9200 baud rate the i get exact AB AB values.

Can you please help me with this?
I need 9600 baud rate.

Thanks in advance.

Documentation request for upload over the network

https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5-3rd-party-Hardware-specification
does not specify how the upload over the network should be implemented. I'm willing to add this info but I fail to understand the implementation sufficiently to feel comfortable to document

For instance avr patform.txt states
tools.avrdude.network_cmd={runtime.tools.arduinoOTA.path}/bin/arduinoOTA tools.avrdude.upload.network_pattern="{network_cmd}" -address {serial.port} -port {upload.network.port} -sketch "{build.path}/{build.project_name}.hex" -upload {upload.network.endpoint_upload} -sync {upload.network.endpoint_sync} -reset {upload.network.endpoint_reset} -sync_exp {upload.network.sync_return}

Do I have to see this like the Automatic property override for specific OS; if present and network is used for upload, overrule default by this value? If so why is it not .network at the end of the key?
I feel there is also a need to document why we use "_" as separator for network and not the normal ".".

Thanks
jantje

Document / specify core and variant requirements and workings

We need some more exhaustive documentation about the "interface" that a core or variant should expose. There is this wiki page, which documents a good deal of the structure and has examples, but is not exhaustive or explicit. In particular:

  • All of the required keys in platform.txt, boards.txt and programmers.txt, and what they are used for, should be listed. These keys form the "external interface" of the core, which can be used by the IDE or arduino-builder. A core can also contain arbitrary other keys, which are used for variable substitutions internally, but cannot be relied on to exist is all cores. Currently, this distinction is blurry and ad-hoc.
  • All of the macros, functions and variables that a variant of the Arduino core should expose should be documented. Some of these are mean to be used by the sketch directly (and should actually be documented as part of the normal Arduino reference), but some of them are only used internally by the Arduino core as part of another API. Currenly, no definitive list of these exists, making variants (both third-party and Arduino ones) inconsistent or incomplete.

Both of these pieces of documentation should be updated when the requirements change in future IDE or core versions, with the changes mentioned explicitly and with the IDE or core version that introduced them.

Related issues are arduino/Arduino#3371 and arduino/Arduino#3681.

Compiler warnings not shown on subsequent compilations

Describe the problem

Compiler warnings for code from non-.ino source files are not shown on subsequent sketch compilations.

To reproduce

When someone writes code like this (see below) he will correctly get two identical warnings:
"warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]"

When one compiles it again the warnings will all disappear so the user (me) thinks he is perfectly fine and writing clean code.

FunFact: This will not happen if all code is written to the main (.ino) file.

File DummyClass.h:

class DummyClass
{
public:
  char* getString();

  char* getSecondString();
};

File DummyClass.cpp:

char* DummyClass::getString()
{
  return "Some String";
}

char* DummyClass::getSecondString()
{
  return "Some other string";
}

File test.ino:

#include "DummyClass.h"
DummyClass dummy;

void setup()
{
  Serial.begin(115200);
}
void loop()
{
  Serial.println(dummy.getString());
  delay(1000);
}

Expected behavior

Compiler warnings are shown every time the sketch is compiled if the code would produce a warning.

Arduino CLI version

60a8aa9

Operating system

All

Operating system version

Any

Additional context

Additional reports

Related

Issue checklist

  • I searched for previous reports in the issue tracker
  • I verified the problem still occurs when using the nightly build
  • My report contains all necessary details

How to add URL for other boards?

I see board_manager in .cli_config.yml but I cannot figure out the syntax to add a board URL for Adafruit or ESP8266.

The IDE can do this from the command line like this. I am converting a script using the IDE command line to the new arduino-cli.

./arduino --pref "boardsmanager.additional.urls=https://adafruit.github.io/arduino-board-index/package_adafruit_index.json" --save-prefs

S files are always recompiled

Currently (1.6.0) the method compileFiles (Compiler.java) calls isAlreadyCompiled for C and CPP files but not S files. This means .S files are always recompiled.

Proposal: extend compileFIles to call isAlreadyCompiled for S files.

panic: runtime error when running arduino-cli core search arduino

When I try to run the search via core command, I get following error:

arduino-cli core search arduino

Searching for platforms matching 'arduino'

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x6d93cc]

goroutine 1 [running]:
github.com/arduino/arduino-cli/vendor/go.bug.st/relaxed-semver.(*Version).CompareTo(0x0, 0xc4202dcea0, 0x1)
        /home/jenkins/workspace/arduino-cli/src/github.com/arduino/arduino-cli/vendor/go.bug.st/relaxed-semver/version.go:115 +0x2c
github.com/arduino/arduino-cli/vendor/go.bug.st/relaxed-semver.(*Version).GreaterThan(0x0, 0xc4202dcea0, 0x1)
        /home/jenkins/workspace/arduino-cli/src/github.com/arduino/arduino-cli/vendor/go.bug.st/relaxed-semver/version.go:202 +0x35
github.com/arduino/arduino-cli/arduino/cores.(*Platform).latestReleaseVersion(0xc420264380, 0xc420279790)
        /home/jenkins/workspace/arduino-cli/src/github.com/arduino/arduino-cli/arduino/cores/cores.go:149 +0x7f
github.com/arduino/arduino-cli/arduino/cores.(*Platform).GetLatestRelease(0xc420264380, 0xc42009b070)
        /home/jenkins/workspace/arduino-cli/src/github.com/arduino/arduino-cli/arduino/cores/cores.go:123 +0x2b
github.com/arduino/arduino-cli/commands/core.runSearchCommand(0xc42026b680, 0xc420255040, 0x1, 0x1)
        /home/jenkins/workspace/arduino-cli/src/github.com/arduino/arduino-cli/commands/core/search.go:59 +0x2dd
github.com/arduino/arduino-cli/vendor/github.com/spf13/cobra.(*Command).execute(0xc42026b680, 0xc420255000, 0x1, 0x1, 0xc42026b680, 0xc420255000)
        /home/jenkins/workspace/arduino-cli/src/github.com/arduino/arduino-cli/vendor/github.com/spf13/cobra/command.go:760 +0x2c1
github.com/arduino/arduino-cli/vendor/github.com/spf13/cobra.(*Command).ExecuteC(0xc42022cc80, 0xc42026b900, 0xc42026a500, 0xc42022db80)
        /home/jenkins/workspace/arduino-cli/src/github.com/arduino/arduino-cli/vendor/github.com/spf13/cobra/command.go:846 +0x30a
github.com/arduino/arduino-cli/vendor/github.com/spf13/cobra.(*Command).Execute(0xc42022cc80, 0x9e50c8, 0xc420215f78)
        /home/jenkins/workspace/arduino-cli/src/github.com/arduino/arduino-cli/vendor/github.com/spf13/cobra/command.go:794 +0x2b
main.main()
        /home/jenkins/workspace/arduino-cli/src/github.com/arduino/arduino-cli/main.go:30 +0x27

I'm using Ubuntu 18.04
4.15.0-33-generic #36-Ubuntu SMP Wed Aug 15 16:00:05 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

upload -t(--verify) enables "Verbose" instead of "Verify"

$ go/bin/arduino-cli-0.2.1-alpha.preview-linux64 upload -t --port /dev/ttyUSB0 -b arduino:avr:nano:cpu=atmega328 Blink

avrdude: Version 6.3, compiled on Jan 17 2017 at 11:00:16

avrdude: 928 bytes of flash

Above shows --verbose and NO --verify

$ ./arduino-cli upload -t -v --port /dev/ttyUSB0 -b arduino:avr:nano:cpu=atmega328 ~/Blink
avrdude: Version 6.3, compiled on Jan 17 2017 at 11:00:16

avrdude: 928 bytes of flash written
avrdude: verifying flash memory against /home/siehputz/Blink/Blink.arduino.avr.nano.cpu=atmega328.hex:
avrdude: load data flash data from input file /home/siehputz/Blink/Blink.arduino.avr.nano.cpu=atmega328.hex:
avrdude: input file /home/siehputz/Blink/Blink.arduino.avr.nano.cpu=atmega328.hex contains 928 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.13s

avrdude: verifying ...
avrdude: 928 bytes of flash verified


This upload.go was patched with

--- ../../../../Downloads/upload.go 2018-09-04 10:49:25.040860707 -0500
+++ arduino-cli/commands/upload/upload.go 2018-09-02 18:39:56.060296516 -0500
@@ -49,7 +49,7 @@
"Fully Qualified Board Name, e.g.: arduino:avr:uno")
uploadCommand.Flags().StringVarP(&flags.port, "port", "p", "",
"Upload port, e.g.: COM10 or /dev/ttyACM0")

  • uploadCommand.Flags().BoolVarP(&flags.verbose, "verify", "t", false,
  • uploadCommand.Flags().BoolVarP(&flags.verify, "verify", "t", false,
    "Verify uploaded binary after the upload.")
    uploadCommand.Flags().BoolVarP(&flags.verbose, "verbose", "v", false,
    "Optional, turns on verbose mode.")

Missing tool:- builtin:[email protected]

Does anyone have this tool:- builtin:[email protected].
While using arduino cli on my Windows I was able to create sketch but after that when I tried to compile it gives me an error as shown below.
I am not getting that anywhere on the internet or wasn't able to find it.
So it will be very generous of you all if you could provide me that tool.
I will try to manually put it in Arduino15 so that I can compile my code using Arduino-cli.
Thank you in advance.
screenshot_8

Emit a warning if a prototype is not generated due to known limitations

Describe the request

Print a warning when necessary prototype generation for a function was intentionally skipped.

๐Ÿ™‚ The user will have useful information about the cause of what would otherwise be a very mysterious compilation error.

Describe the current behavior

In order to make it easier for beginners to get started with writing Arduino sketches, and for the convenience of all users, Arduino CLI automatically generates and adds prototypes for functions defined in a .ino file of a sketch unless the sketch already contains that prototype.

Due to not needing to write them, and due to them not being mentioned anywhere in the official documentation of the Arduino Language, the average Arduino user does not know about function prototypes and takes forward declaration of their functions for granted.

In some cases, it might not be feasible for Arduino CLI to generate a prototype. For example, prototypes are intentionally not generated in the following cases:

Default parameter values

Prototypes are not generated for functions with default parameter values (arduino/Arduino#386):

if signatureContainsaDefaultArg(proto) {
continue
}

Compiling a sketch with a function using default parameter values that was referenced before declaration like this:

void setup() {
  foo();
}
void loop() {}
void foo(int bar = 42) {
  (void)bar;  // fix "unused parameter" warning
}

will fail:

C:\Users\per\Documents\Arduino\sketch_oct24a\sketch_oct24a.ino: In function 'void setup()':
C:\Users\per\Documents\Arduino\sketch_oct24a\sketch_oct24a.ino:2:3: error: 'foo' was not declared in this scope
   foo();
   ^~~

Namespaces

Prototypes are not generated for functions in namespaces (arduino/Arduino#5984):

if tag.Namespace != "" {
return false
}

Compiling a sketch with a function using default parameter values that was referenced before declaration like this:

namespace foo {
  void bar() {
    baz();
  }
  void baz() {}
}
void setup() {
  foo::bar();
}
void loop() {}

will fail:

C:\Users\per\Documents\Arduino\sketch_oct24a\sketch_oct24a.ino: In function 'void foo::bar()':
C:\Users\per\Documents\Arduino\sketch_oct24a\sketch_oct24a.ino:3:5: error: 'baz' was not declared in this scope
     baz();
     ^~~

Arduino CLI knows full well that it is omitting an essential prototype, yet doesn't make any effort to communicate that fact to the user.

๐Ÿ™ The user will have great difficulty in determining the cause of the error and how to fix it. When the user asks for help on the forum, the programming wizards there will take great glee in the opportunity to gripe once again about how terrible of an idea prototype generation is.

Arduino CLI version

f239754

Operating system

All

Operating system version

Any

Additional context

Examples of where this has caused confusion for the users:


Originally suggested at arduino/Arduino#5103 (comment)

Additional Requests

Issue checklist

  • I searched for previous requests in the issue tracker
  • I verified the feature was still missing when using the latest nightly build
  • My request contains all necessary details

Enable unit tests - ignore a `test/` directory in an Arduino library

Background

I've developed a system called arduino_ci that enables Arduino libraries to be unit tested, both locally and remotely (as part of a service like Travis CI). Among other things, this includes abilities such as

Problem

The trick is where (in the library) to put the files that contain the tests. According to the specification:

An extras folder can be used by the developer to put documentation or other items to be bundled with the library. [...] The content of the extras folder is totally ignored by the IDE; you are free to put anything inside such as supporting documentation, etc.

I would prefer not to put tests in "extras/", both for closer proximity to the code begin tested and because (in my opinion) the ability to run tests is an important and necessary part of any software project. (Similar to how they are organized in modules for Java, Python, NodeJS, etc.)

Question

What chance is there of amending the library specification to ignore (whether that means whitelisting or blacklisting in this context) a directory called "test/" where all the automated tests would live? Alternately, could something similar to .gitignore be used for that purpose?

See Also:

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.