LattePanda Mu

Basic information

Board URL (official): https://www.lattepanda.com/lattepanda-mu
Board purchased from: (Provided for review by LattePanda)
Board purchase date: 2024-05-02
Board specs (as tested): 8G RAM / 64G eMMC
Board price (as tested): $139

Linux/system information
# output of `neofetch`
PASTE_HERE

# output of `uname -a`
PASTE_HERE

Benchmark results
CPU

Geekbench 6: (TODO single / TODO multi - PASTE_URL)
TODO Gflops (geerlingguy/top500-benchmark HPL result)

Power

Idle power draw (at wall): TODO W
Maximum simulated power draw (stress-ng --matrix 0): TODO W
During Geekbench multicore benchmark: TODO W
During top500 HPL benchmark: TODO W

Disk
MANUFACTURER_AND_MODEL_OF_DISK_HERE

Benchmark
Result

fio 1M sequential read
TODO MB/s

iozone 1M random read
TODO MB/s

iozone 1M random write
TODO MB/s

iozone 4K random read
TODO MB/s

iozone 4K random write
TODO MB/s

curl https://raw.githubusercontent.com/geerlingguy/pi-cluster/master/benchmarks/disk-benchmark.sh | sudo bash
Run benchmark on any attached storage device (e.g. eMMC, microSD, NVMe, SATA) and add results under an additional heading. Download the script with curl -o disk-benchmark.sh [URL_HERE] and run sudo DEVICE_UNDER_TEST=/dev/sda DEVICE_MOUNT_PATH=/mnt/sda1 ./disk-benchmark.sh (assuming the device is sda).
Also consider running PiBenchmarks.com script.
Network
iperf3 results:

iperf3 -c $SERVER_IP: TODO Mbps
iperf3 --reverse -c $SERVER_IP: TODO Mbps
iperf3 --bidir -c $SERVER_IP: TODO Mbps up, TODO Mbps down

(Be sure to test all interfaces, noting any that are non-functional.)
GPU
glmark2-es2 results:
1. Install glmark2-es2 with `sudo apt install -y glmark2-es2`
2. Run `glmark2-es2`
3. Replace this block of text with the results.

Note: This benchmark requires an active display on the device. Not all devices may be able to run glmark2-es2, so in that case, make a note and move on!
TODO: See this issue for discussion about a full suite of standardized GPU benchmarks.
Memory
tinymembench results:

Click to expand memory benchmark result
# Run the two commands below, then replace this code block with the full result.
git clone https://github.com/rojaster/tinymembench.git && cd tinymembench && make
./tinymembench

sbc-bench results
Run sbc-bench and paste a link to the results here:
wget https://raw.githubusercontent.com/ThomasKaiser/sbc-bench/master/sbc-bench.sh
sudo /bin/bash ./sbc-bench.sh -r

Phoronix Test Suite
Results from pi-general-benchmark.sh:

pts/encode-mp3: TODO sec
pts/x264 4K: TODO fps
pts/x264 1080p: TODO fps
pts/phpbench: TODO
pts/build-linux-kernel (defconfig): TODO sec

A few notes unboxing and assembling this SBC with it's Lite Carrier ($40) and their official Aluminum Active Cooler ($12):

The lite board includes an open-ended PCIe Gen 3 x4 slot, which apparently is only powered when using DC barrel jack power (12V DC), but not using 15V USB-C PD input.
The Lite board includes 2x USB 3.0, 2x USB 2.0, Ethernet (TODO — 1 Gbps? 2.5?), HDMI, and 12V barrel plug or 15V USB-C PD power input.
The active cooler fits over the rather large (compared to typical SBCs) N100 chip using three spring-loaded screws. I would not crank the screws down 100% tight, as there is ever-so-slight board flex if you attempt that.
DFRobot intends to make a higher-RAM variant at some point in the future (16GB was mentioned).
The official web page for the product lists a few potential future expansion boards: NAS carrier with 10 GbE (4x?) and 8 NVMe M.2 2280 slots, Router Carrier with 4x Ethernet jacks with PoE power output (maybe?), Graphics Carrier with MXM, SXM, OAM, or general PCIe cards, and a Cluster Carrier for multiple Mu boards. The illustrations show extremely basic designs lacking networking, power circuitry, etc. meaning those are likely quick illustrations to show potential future products based on what's stuck for things like the Pi Compute Module 4.

As MKBHD says (paraphrased), "don't buy a product based on future promises" — but is the Mu good enough to stand on its own merits, and could an ecosystem develop around this form factor like it has around the Compute Modules?

Some other coverage of the board:

ETA Prime video
CNX Software

First boot:

I booted it up from the eMMC the first time; it rebooted three times and in the middle boot mentioned there was a CMOS checksum error (no doubt because there was no CMOS battery, it came with one I installed after setting up the board).
It booted into Windows 11 Home (no license attached)
In Windows: playing back 4K video on YouTube, the Intel UHD Graphics iGPU goes up to 30-35% utilization, and CPU maxes out at 100% utilization, but only a couple frames are dropped overall, no real issues there.
In Windows: 8 GB creates a lot of memory pressure. Just one browser tab opened to YouTube pumped up utilization to 5 GB. Two more browser tabs (CNN and Microsoft), and we hit 6 GB!
I flashed Ubuntu 22.04 to a USB drive, and installed a Kioxia BG4 2230-size M.2 NVMe SSD in the M.2 M-key slot, and will attempt installing Ubuntu on the LattePanda Mu

Ubuntu installation / notes:

With the USB drive plugged in, a boot option selection menu popped up on the next power on, and I could select the UEFI-based installer, then went into Ubuntu's installer.
Ubuntu's installer didn't see the Kioxia BG4, so I popped out of the Installer and launched Terminal.
I pulled the BG4 and installed a WD SN520 instead.

Ubuntu installation:

I decided to just overwrite the Windows installation on the 64 GB built-in eMMC.
Installation was simple and straightforward once I went with the eMMC.
Power usage fluctuated between 9-22W (with some peaks hitting 25W), in both Windows and Ubuntu—the BIOS seemed to have all turbos enabled, so no chip limits in place.

Power consumption during Geekbench 6 run:

Pibenchmarks.com test results:
     Category                  Test                      Result
HDParm                    Disk Read                 291.80 MB/sec
HDParm                    Cached Disk Read          281.63 MB/sec
DD                        Disk Write                103 MB/s
FIO                       4k random read            26323 IOPS (105295 KB/s)
FIO                       4k random write           21222 IOPS (84891 KB/s)
IOZone                    4k read                   54314 KB/s
IOZone                    4k write                  44254 KB/s
IOZone                    4k random read            31812 KB/s
IOZone                    4k random write           44036 KB/s

                          Score: 10891

I don't see them yet on https://pibenchmarks.com/user/geerlingguy/ though.

Interestingly the device shares the 'product name' ADL-N with this Weibu Mini PC.

Power consumption while off (after I did a sudo shutdown now and waited a few hours):

Based on what I read from their schematics and Discord plus my tinkering.

The Lite board includes 2x USB 3.0, 2x USB 2.0, Ethernet (TODO — 1 Gbps? 2.5?), HDMI, and 12V barrel plug or 15V USB-C PD power input.

The Ethernet on the lite carrier is provided by a good old gigabit Realtek RTL8111H.

DFRobot intends to make a higher-RAM variant at some point in the future (16GB was mentioned).

From the "manual" included, DFRobot also has a 24GB variant listed.

I pulled the BG4 and installed a WD SN520 instead.
...and BIOS didn't see that either.

If you are using the lite carrier, that M.2 M-key slot only has SATA signal wired.

If you are using the lite carrier, that M.2 M-key slot only has SATA signal wired.

Oh! That's a bit crazy, I don't think I've even seen a 2230-sized SATA M.2 drive. But I guess they must exist...

@geerlingguy Sorry my fault I stand corrected. I dig out their lite carrier schematic and confirm again because 2230 SATA SSD doesn't make a lot of sense... (I have seen 2242 "NGFF" SATA SSD in the late 2010s but never 2230)
The M-key slot is indeed connected to a PCIe x1 signal.

Video covering the Mu: https://www.youtube.com/watch?v=GKGtRrElu30 (and blog post).

Were you able to get the SSD working finally? Don't think you went over that in the video. The M-key is rated for PCI-E x1.
The standards for m.2 are
M-key is for PCIe x4 / NVMe x4 or SATA.
B-key is for PCIe x2 / NVMe x2 or SATA.
E-key is for wifi like you said.
So if i understand this right, an m.2 SATA or nvme SSD should'nt work in that slot.

I have the same issue but with an older latte panda


pixi global: list and uninstall

Problem description
Corrently pixi global install lets you install packages in its own environment and makes them accessible everywhere. However, as of now there is no command to uninstall these packages, or to show all the available packages form the global scope (e.g. pixi global uninstall, pixi global list).
$ pixi global -h
Global is the main entry point for the part of pixi that executes on the global(system) level

Usage: pixi global [OPTIONS] <COMMAND>

Commands:
  install  Installs the defined package in a global accessible location
  help     Print this message or the help of the given subcommand(s)

Options:
  -v, --verbose...     More output per occurrence
  -q, --quiet...       Less output per occurrence
      --color <COLOR>  Whether the log needs to be colored [default: auto] [possible values: always, never, auto]
  -h, --help           Print help (see more with '--help')

Good points! Would be great to have those.


Dynamic view doesn't respect column major

Here is a (pretty much) full cpp example where you can see that dynamic_view() doesn't seem to respect column major layout. I had a look at the code for dynamic_view(), and it looks like it tries to use the layout of e, so I'm not quite sure where the issue is.
I'm running the current master branch of xtensor.
// [[Rcpp::depends(xtensor)]]
// [[Rcpp::plugins(cpp14)]]

#include <xtensor/xdynamic_view.hpp>
#include <xtensor/xarray.hpp>
#include <xtensor/xio.hpp>
#include <Rcpp.h>

// [[Rcpp::export]]
void subset_test() {

  xt::xarray<double, xt::layout_type::column_major> x = {{1, 4}, {2, 5}, {3, 6}};

  xt::xdynamic_slice_vector sv({});
  sv.push_back(xt::all());
  sv.push_back(xt::all());

  auto res = xt::dynamic_view(x, sv);

  std::cout << x << std::endl;
  std::cout << res << std::endl;
}

> subset_test()
{{ 1.,  4.},
 { 2.,  5.},
 { 3.,  6.}}
{{ 1.,  2.},
 { 3.,  4.},
 { 5.,  6.}}

The equivalent strided view does respect column major.
// [[Rcpp::depends(xtensor)]]
// [[Rcpp::plugins(cpp14)]]

#include <xtensor/xstrided_view.hpp>
#include <xtensor/xarray.hpp>
#include <xtensor/xio.hpp>
#include <Rcpp.h>

// [[Rcpp::export]]
void subset_test() {

  xt::xarray<double, xt::layout_type::column_major> x = {{1, 4}, {2, 5}, {3, 6}};

  xt::xstrided_slice_vector sv({});
  sv.push_back(xt::all());
  sv.push_back(xt::all());

  auto res = xt::strided_view(x, sv);

  std::cout << x << std::endl;
  std::cout << res << std::endl;
}

> subset_test()
{{ 1.,  4.},
 { 2.,  5.},
 { 3.,  6.}}
{{ 1.,  4.},
 { 2.,  5.},
 { 3.,  6.}}

Hi Davis, that's bad! I'll quickly have a look to see if I can spot the issue. Thanks for reporting.

I think the issue might be in the printing: for printing, this uses a strided_view on top of a dynamic_view.
E.g. printing like this:
    std::cout << res(0, 0) << ", " << res(0, 1) << std::endl;
    std::cout << res(1, 0) << ", " << res(1, 1) << std::endl;
    std::cout << res(2, 0) << ", " << res(2, 1) << std::endl;

seems to print the correct result.
cc @SylvainCorlay @JohanMabille

@wolfv this is pretty much what we fixed in #1512 I think.

Yep, I can confirm this works with master now.

Thanks @DavisVaughan for reporting.

Note: this fix also fixes the printing of broadcast views etc...

sweet! I actually can't test it because I am using GCC9 and it's broken our
has_data_interface function.
Am Fr., 12. Apr. 2019 um 15:22 Uhr schrieb Sylvain Corlay <
<EMAIL_ADDRESS>
Yep, I can confirm this works with master now.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/QuantStack/xtensor/issues/1517#issuecomment-482572266,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AA2BPj5rgbwEgZWMWUkeOnYADu01XYarks5vgIh8gaJpZM4csBwa
.

Wait, are you sure this is a printing bug? If I convert to R objects and return them, they are still wrong (that's how I originally found it).
I am also running master of xtensor.
// [[Rcpp::depends(xtensor)]]
// [[Rcpp::plugins(cpp14)]]

#include <xtensor-r/rarray.hpp>
#include <xtensor/xdynamic_view.hpp>
#include <xtensor/xarray.hpp>
#include <xtensor/xio.hpp>
#include <Rcpp.h>

// [[Rcpp::export]]
SEXP subset_test() {

  xt::rarray<double> x = {{1, 4}, {2, 5}, {3, 6}};

  xt::xdynamic_slice_vector sv({});
  sv.push_back(xt::all());
  sv.push_back(xt::all());

  auto res = xt::dynamic_view(x, sv);

  xt::rarray<double> res_r = res;

  Rcpp::RObject x_out = SEXP(x);
  Rcpp::RObject res_out = SEXP(res_r);

  return Rcpp::List::create(x_out, res_out);
}

> subset_test()
[[1]]
     [,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6

[[2]]
     [,1] [,2]
[1,]    1    5
[2,]    4    3
[3,]    2    6

Ok, I'll try assigning to a col major xarray then!

Indeed, there seems to be an issue:
    xt::xarray<double, xt::layout_type::column_major> x = {{1, 4}, {2, 5}, {3, 6}};

    xt::xdynamic_slice_vector sv({});
    sv.push_back(xt::all());
    sv.push_back(xt::all());

    auto res = xt::dynamic_view(x, sv);
    xt::xarray<double, xt::layout_type::column_major> xrs = res;

    std::cout << x << std::endl;
    std::cout << xrs << std::endl;

This is out of place, but I also get these lovely warnings upon compiling now. New change?
In file included from test.cpp:4:
In file included from /Library/Frameworks/R.framework/Versions/3.5/Resources/library/xtensor/include/xtensor-r/rarray.hpp:18:
In file included from /Library/Frameworks/R.framework/Versions/3.5/Resources/library/xtensor/include/xtensor/xcontainer.hpp:23:
In file included from /Library/Frameworks/R.framework/Versions/3.5/Resources/library/xtensor/include/xtensor/xmath.hpp:26:
In file included from /Library/Frameworks/R.framework/Versions/3.5/Resources/library/xtensor/include/xtensor/xoperation.hpp:22:
/Library/Frameworks/R.framework/Versions/3.5/Resources/library/xtensor/include/xtensor/xmanipulation.hpp:213:5: warning: struct template 'xiterator_adaptor' was previously declared as a class template [-Wmismatched-tags]
    struct xiterator_adaptor;
    ^
/Library/Frameworks/R.framework/Versions/3.5/Resources/library/xtensor/include/xtensor/xbuffer_adaptor.hpp:431:11: note: previous use is here
    class xiterator_adaptor : public xbuffer_adaptor_base<xiterator_adaptor<I, CI>>
          ^
/Library/Frameworks/R.framework/Versions/3.5/Resources/library/xtensor/include/xtensor/xmanipulation.hpp:213:5: note: did you mean class here?
    struct xiterator_adaptor;
    ^~~~~~
    class
1 warning generated.

ah that's easy to fix (change struct to class). woudl be a nice PR :)

Fixed in #1520


creationView  referenced_list add new item

hi,
first of all thanks for this great tool, I just whant to ask if thiere a way to add new reference item on the referenced_list section
thanks

You can insert a button to link to the creationView of the related entity, with the reference prefilled with the current entity ID. It's done in the blog demo: https://github.com/marmelab/ng-admin/blob/master/examples/blog/config.js#L167 (look for  <ma-create-button>.


basic ./install.sh crashes building container on step 49/49

Describe the bug
sqlalchemy.exc.InternalError: (psycopg2.errors.DependentObjectsStillExist) cannot drop function organization_search_vector_update() because other objects depend on it
DETAIL:  trigger organization_search_vector_trigger on table organization depends on function organization_search_vector_update()
** Detail **
my org is planning to evaluate netflix/dispatch for application suitability.
I am tasked with leading this review (so I'm very new to this application & architecture)
I did a quick /smoke test/ cloned repo, ran ./install.sh on fresh ubuntu 22.04 system crashed during build process with an sqlAlchemy issue on step 49/49 .. and I now plan to spend a bit of time diagnosing this (which I will post on this thread)
Step 49/49 : LABEL org.opencontainers.image.licenses="https://github.com/netflix/dispatch/blob/${SOURCE_COMMIT:-master}/LICENSE"
 ---> Running in fa7f11fc1dd9
Removing intermediate container fa7f11fc1dd9
 ---> 8a5a6a427fdf
Successfully built 8a5a6a427fdf
Successfully tagged dispatch-local:latest

Docker images pulled and built.
Creating network "dispatch_default" with the default driver
Creating dispatch_postgres_1 ... done

Setting up database...
Do you want to load example data (WARNING: this will remove all existing database data) (y/N)?Initializing the database
Creating dispatch_core_1 ... done
Creating dispatch_web_run ... done

/usr/local/lib/python3.9/site-packages/requests/__init__.py:102: RequestsDependencyWarning: urllib3 (1.26.9) or chardet (5.0.0)/charset_normalizer (2.0.12) doesn't match a supported version!
  warnings.warn("urllib3 ({}) or chardet ({})/charset_normalizer ({}) doesn't match a supported "
Initializing new database...
Success.
Running standard database migrations...
Creating dispatch_web_run ... done
/usr/local/lib/python3.9/site-packages/requests/__init__.py:102: RequestsDependencyWarning: urllib3 (1.26.9) or chardet (5.0.0)/charset_normalizer (2.0.12) doesn't match a supported version!
  warnings.warn("urllib3 ({}) or chardet ({})/charset_normalizer ({}) doesn't match a supported "
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
    self.dialect.do_execute(
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 608, in do_execute
    cursor.execute(statement, parameters)
psycopg2.errors.DependentObjectsStillExist: cannot drop function organization_search_vector_update() because other objects depend on it
DETAIL:  trigger organization_search_vector_trigger on table organization depends on function organization_search_vector_update()
HINT:  Use DROP ... CASCADE to drop the dependent objects too.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/bin/dispatch", line 8, in <module>
    sys.exit(entrypoint())
  File "/usr/local/lib/python3.9/site-packages/dispatch/cli.py", line 794, in entrypoint
    dispatch_cli()
  File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1128, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1053, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1659, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1659, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1395, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.9/site-packages/click/core.py", line 754, in invoke
    return __callback(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/dispatch/cli.py", line 380, in upgrade_database
    setup_fulltext_search(conn, get_core_tables())
  File "/usr/local/lib/python3.9/site-packages/dispatch/database/manage.py", line 172, in setup_fulltext_search
    sync_trigger(**trigger)
  File "/usr/local/lib/python3.9/site-packages/dispatch/search/fulltext/__init__.py", line 404, in sync_trigger
    conn.execute(str(sql), **sql.params)
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1003, in execute
    return self._execute_text(object_, multiparams, params)
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1172, in _execute_text
    ret = self._execute_context(
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1316, in _execute_context
    self._handle_dbapi_exception(
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1510, in _handle_dbapi_exception
    util.raise_(
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 182, in raise_
    raise exception
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
    self.dialect.do_execute(
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 608, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.InternalError: (psycopg2.errors.DependentObjectsStillExist) cannot drop function organization_search_vector_update() because other objects depend on it
DETAIL:  trigger organization_search_vector_trigger on table organization depends on function organization_search_vector_update()
HINT:  Use DROP ... CASCADE to drop the dependent objects too.

[SQL: DROP FUNCTION IF EXISTS dispatch_core.organization_search_vector_update()]
(Background on this error at: http://sqlalche.me/e/13/2j85)
ERROR: 1
Cleaning up...

docker-compose build does work.

@elasticdotventures there's a fix for this issue in the dispatch master branch that will be included in the next release. Until then, you can remove #latest from this line: https://github.com/Netflix/dispatch-docker/blob/master/docker-compose.yml#L22


Include generated files, and rate limiter

Balance changes
Buffs

When available, PRIDE-generated files (mztab, mgf) are now included when a request is made for a project's files.

Nerfs

Users' GET requests are now limited to a rate of 60 requests per 30 second period.
TravisCI can never pass, it has been completely removed.

Clean code and straight forward solution to limit hit rate on the web service.
Cool, thanks a lot for this @Tobias-Ternent !


Event archive page

This should be functionally complete, but needs proper HTML/CSS structure by @artifactdev .

Pull Request Test Coverage Report for Build 288

0 of 0   changed or added relevant lines in 0 files are covered.
11 unchanged lines in 1 file lost coverage.
Overall coverage decreased (-0.3%) to 99.209%

Files with Coverage Reduction
New Missed Lines
%

talk/views.py
11
96.34%

Totals

Change from base Build 276:
-0.3%

Covered Lines:
2184

Relevant Lines:
2198

💛  - Coveralls


fix: remove --cpu option in ngxway file

By default, the host CPU processors that containers can use are unlimited.


error:ModuleNotFoundError: No module named 'top_pool'

when i run this code, I don't import top_pool. I find that I have top_pool.py.


Enable 200% scaling in GNOME ootb for the 2.8k display

Then it'd be perfect ootb!

@m2Giles I didn't have to make adjustments on mine, just worked ootb, just confirming this was your experience.

Same. No need to set display scaling on the new screen on a fresh install.


add region setting in README

I've added the region setting in the README file (somehow with my Dragino LPS8 I had to edit it manually, as I am in EU868 region), not sure if I listed all possible regions in my edit :
US915| EU868 | EU433 | CN470 | CN779 | AU915 | AS923 | KR920 | IN865
I don't know if it is possible to "autodetect" the region from the platform settings directly, this might be useful :)

I don't know if it is possible to "autodetect" the region from the platform settings directly, this might be useful :)

If there was such a thing as a  "platform setting" where we could infer the region that would be cool, but it seems highly intertwined with the lora packet forwarder settings on the same device which are quite different per platform.


fix(deps): bump pydantci to 1.9.0

LBT libraries are moved to 1.9.0 and without updating the dependency here we will have conflict issues for local runs.

@AntoineDao, do you foresee any possible issues here? All the tests are passing.

cc: @chriswmackey, @MingboPeng

I'm not sure what the key differences are between 1.8 and 1.9 so unclear if they introduced backwards incompatible code. If you guys haven't had any issues and tests pass here it should be safe. I would be more comfortable with a pydantic>=1.8.2 instead so that other dependent libraries aren't forced to upgrade because the rest of ladybug tools has. Otherwise we're going to have to update pydantic-openapi-helper and I'm not sure what misery that might entail 😛
Is that a good compromise?

That's a good compromise in my opinion and resolved the issue at hand. I made the change and will merge it in if the tests pass.


Bump dev dependencies

Thanks @simonhammes! I'm going to tweak the compatibility policy slightly to be non-EOL Python versions so we can drop EOL Python support without bumping the major version each time. For now this is great 🙏!

Thanks, that makes sense!


Refresh doc site information architecture

User Reference
Overview

What is Breadboard?
What's it's for?
...

Visual Editor 💙

Overview (panels)

Navigating within Visual Editor
...

Left Panel (Providers)

Providers
Load/save board
...

Activity panel

Run/stop board
Inputs/outputs
Inspect activity
Load/save runs
...

Node details
Graph editor

...

Settings

Build API

...

Kits

Built-in Kits (input/output)
Core Kit
JSON Kit
Template Kit
Gemini Kit
Agent Kit 💙
Python WASM Kit
Google Drive Kit

User Guides & Examples

Agent Kit 💙

Build a Librarian
Build a Novel Writer

Build API

Build a ...
...

Developer Reference

Graph Inspector API
Run Inspector API
Board Server
Connection Server
Editor API
Python
Concepts

Inputs and Outputs
Architectural principles
Overall project architecture

News/updates

User Reference
Overview

What is Breadboard?
What's it's for?
...

Visual Editor 💙

Overview (panels)

Navigating within Visual Editor
...

Left Panel (Providers)

Providers
Load/save board
...

Activity panel

Run/stop board
Inputs/outputs
Inspect activity
Load/save runs
...

Node details
Graph editor

...

Settings

Build API

...

Kits

Built-in Kits (input/output)
Core Kit
JSON Kit
Template Kit
Gemini Kit
Agent Kit 💙
Python WASM Kit
Google Drive Kit

User Guides & Examples

Agent Kit 💙

Build a Librarian
Build a Novel Writer

Build API

Build a ...
...

Developer Reference

Graph Inspector API
Run Inspector API
Board Server
Connection Server
Editor API
Python
Concepts

Inputs and Outputs
Architectural principles
Overall project architecture

News/updates


Changes to make sure that time bounds are preserved in the correct way.

Addresses #700
Testing:

[x] Ran tests and they passed OK
[x] Added new tests for the new feature(s)

I have looked at cube_manipulation.py and changed the functionality of _equalise_coord_bounds slightly. This was doing most of what we wanted it to do, but if there was a cube which didn't have bounds, and one that did, it would get rid of the bounds. This was a historic fix, which after discussion with Stephen Moseley we realised we didn't need. So this functionality has been taken out.
There were unit tests to cover some of the work already, but I have updated and added to the unit tests within test_equalise_coord_bounds. This should run as required. The unit tests now cover these cases (for both the coordinate 'time' and also 'forecast_period':

Where the cubes have identical bounds
Where none of the cubes have bounds
Where the cubes have mismatched bounds (but still values within the bounds)
Where there is a cube that doesn't have bounds, and a cube that does

I have made the small changes that Stephen asked me to make, so it should be ready for a second review now.


ValueError: could not convert string to float: '<IP_ADDRESS>-<IP_ADDRESS>-52422-3128-6'

Hello sir, I am working on a project about real time network traffic classification and I was looking for a pre-trained model or a model i can follow and I found your github. I tried to run it and follow step by step to understund everything but i have got this error while running the feature defining code feats = [x for x in df.columns if x != 'ProtocolName'] X = df[feats].astype(float) Y = df['ProtocolName']
the error = ValueError: could not convert string to float: '<IP_ADDRESS>-<IP_ADDRESS>-52422-3128-6'
I hope you help me on it.
Thank you in advance.

Hello, please refer to the closed issue: https://github.com/krzysiekniburski/Network-Traffic-Classification/issues/1
It should help you


Start-AZSBackup and Least Privileges Principle

LS,
Instead of performing the backup manually, we are scheduling the backup using a non-personal task schedule account. However the documentation is not clear about the least privileges/rights assignment needed to perform this task.
We have found that the non personal account is able to perform this task (Start-AZSBackup) as a Contributor on the Default Provider Subscription. However, we feel this is not by the Least Privileges principle.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: a868d70f-4b98-7a38-5aea-f42f37ec4524
Version Independent ID: e27eb785-922f-55ca-4b12-ca978e5e8680
Content: Backup and data recovery for Azure Stack with the Infrastructure Backup Service
Content Source: articles/azure-stack/azure-stack-backup-infrastructure-backup.md
Service: azure-stack
GitHub Login: @mattbriggs
Microsoft Alias: mabrigg

@AzureStackNerd Thanks for the feedback! I have assigned the issue to the content author to investigate further and update the document as appropriate.

@AzureStackNerd. Thanks for asking this question. I'll need to do some research and ask some folks and will get back to you. #in-progress

Please note, I am still waiting on a response from the tech.  #in-progress

Sure. I don't expect it to be solved easily. Thank you for the update.

@AzureStackNerd I haven't heard from the team regarding this for some time. I've let them know and we had a discussion about it. I am going to close this thread for now. Thanks again for passing this insight along. #please-close


Examples & Documentation

With well documented examples
Features, how to use them
Bare bone implementation, you assume control
SSR/SSG support
Native Vue, not other libraries
smoothscroll-polyfill

Scrollbar
Responsive/mobile design
Circle design
Snapping off
Navigation
Carousell: Autoplay, Autoscroll, Auto
Drag


feat(apps/whale): improve getsubgraphswaps query perf with inmemory indexer

What this PR does / why we need it:

Introduces an inmemory indexer largely following whale's indexer design, to eagerly fetch and cache blocks
When catching up far from the chain tip (> 10 blocks away), the indexer will run in 'concurrent' mode, where 50 requests are dispatched concurrently to fetch the blocks. When one request resolves, another is dispatched straightaway. The blocks are then enqueued and sorted in memory.

This concurrent behaviour allows the indexer to catch up significantly faster.
Any failed request will be added back into the requests queue.

The blocks are combed through to look for dexswaps, enqueued into an inmemory queue sorted by timestamp
Drastically improves performance of /getsubgraphswaps

Which issue(s) does this PR fixes?:
Part of #1024
Additional comments?:

When the inmemory indexer is catching up, controller will rely on the old logic of brute force search for swaps starting from the chain tip
Indexer will take over all requests when it's caught up with chain tip

[Nest] 26390  - 03/31/2022, 1:05:16 AM     LOG [NestFactory] Starting Nest application...
...
[Nest] 26390  - 03/31/2022, 1:05:17 AM     LOG [RPCBlockProvider:mainnet] Cached block 1752086, hash=15f572483fda92cf442c5f3671747440c8c00ef75bccd8533a6834bff5832e8a. BlockQueue[size=2, blockHeights=[1752086 ... 1752098]]
...
[Nest] 26390  - 03/31/2022, 1:05:41 AM     LOG [DexSwapQueue:mainnet] Removed 6 swaps from cache. Remaining: 4171
[Nest] 26390  - 03/31/2022, 1:05:41 AM     LOG [RPCBlockProvider:mainnet] Cached block 1753094, hash=bcb37b19dcdfb9b8b4355bb0e6826997e6515288f88cc6b2fdd5a1678a9f568f. BlockQueue[size=1003, blockHeights=[1752091 ... 1753094]]
[Nest] 26390  - 03/31/2022, 1:05:41 AM     LOG [RPCBlockProvider:mainnet] Indexer caught up with chain tip!

Takes about 20s - 30s to index 1000 blocks and their contained dex swaps.

Just throwing out my thoughts - I was thinking whether this might be too complex and about whether we can reduce the complexity.
Currently, the implementation is somewhat of a push and pull design both running at the same time. Pulling when the indexer hasn't caught up. Pushing it so that it catches up. This implementation creates cognitive complexity since the implementation is convoluted to understand.
The other way we could do it is having it as "pull" only, where you cache "Most Recent Swap" via a timestamp. Using txid as the key since txid lookup is the most expensive part of the logic (Block -> Txn in Block -> Vout -> History). You could effectively cut down on the lookup cost by caching "Txn in Block" -> onwards. So we cache last 10k records of the most expensive part?
I am not sure if this makes sense, but might reduce complexity since you remove the "indexer" part of the equation by relying on a pull design when controller load. We can also run the pull logic on a interval to keep caching.

The other way we could do it is having it as "pull" only, where you cache "Most Recent Swap" via a timestamp. Using txid as the key since txid lookup is the most expensive part of the logic (Block -> Txn in Block -> Vout -> History). You could effectively cut down on the lookup cost by caching "Txn in Block" -> onwards. So we cache last 10k records of the most expensive part?
I am not sure if this makes sense, but might reduce complexity since you remove the "indexer" part of the equation by relying on a pull design when controller load. We can also run the pull logic on a interval to keep caching.

Yea agree that it's somewhat convoluted, although it's following whale's indexer design with the concurrent requests tweak for performance.
Your approach sounds a lot simpler - lemme try it out and see if we can achieve similar performance gain

Closing in favour of #1309


[ WARN ] Imported library 'json' contains no keywords.

I am seeing the following error in json library when running tests in Python 3 (the same test works fine in Python 2.7).
[ WARN ] Imported library 'json' contains no keywords.
To reproduce:

Create use_json_dump.robot file with the following content:

*** Settings ***
Library    json

*** Test Cases ***
Test title
    ${dictionary}    Create Dictionary    json_dumps=yes
    Log    ${dictionary}
    ${dumped}    json.Dumps    ${dictionary}
    Log    ${dumped}

Install robot framework and run the test.

pip install robotframework
robot user_json_dump.robot

Result in Python 3:
c:\tests>robot use_json_dump.robot
c:\program files\python\lib\runpy.py:125: RuntimeWarning: 'robot.run' found in
ys.modules after import of package 'robot', but prior to execution of 'robot.ru
'; this may result in unpredictable behaviour
  warn(RuntimeWarning(msg))
[ WARN ] Imported library 'json' contains no keywords.
==============================================================================
Use Json Dump
==============================================================================
Test title                                                            | FAIL |
No keyword with name 'json.Dumps' found.
------------------------------------------------------------------------------
Use Json Dump                                                         | FAIL |
1 critical test, 0 passed, 1 failed
1 test total, 0 passed, 1 failed
==============================================================================

The reason seems to be that functions in the json module got keyword-only arguments in Python 3.6 and currently Robot Framework doesn't support them. There's already issue #2555 about adding support for them, but I wasn't aware that currently using them silently makes Robot to ignore keywords. Need to see could support for them added already in RF 3.0.3. If not, need to at least make it more visible that the syntax isn't currently supported and fix the problem in RF 3.1. I'll add a note about this to the aforementioned issue.
As a workaround you can switch to Python 3.5 or older where json doesn't use keyword-only arguments. Alternatively you could implement your own JSONLibrary that implements functions you need without keyword-only arguments by using the json module internally.

Thanks for providing the workaround! I will write my own JSONLibrary then.

This issue was fixed in RF 3.0.3 by #2627. Real support for keyword-only arguments was added in RF 3.1 by #2555.


Errors when following Cyphondock deployment script on a fresh Azure Ubuntu 16.04 VM

Spun up a new VM on Azure and followed the bash install server configuration steps by pasting commands one by one
Ubuntu Server 16.04 LTS amd64 20171011 Public Azure
Standard D4s v3 (4 vcpus, 16 GB memory)
Full screen.log
Error message:
$sudo docker exec -it cyphondock_cyphon_1 sh -c "python manage.py loaddata ./f
ixtures/starter-fixtures.json"
An error occurred while closing Streams: could not connect to server: Connection refused
    Is the server running on host "postgres" (<IP_ADDRESS>) and accepting
    TCP/IP connections on port 5432?

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/django/db/backends/base/base.py", line 213, in ensure_connection
    self.connect()
  File "/usr/local/lib/python3.6/site-packages/django/db/backends/base/base.py", line 189, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/usr/local/lib/python3.6/site-packages/django/db/backends/postgresql/base.py", line 176, in get_new_connection
    connection = Database.connect(**conn_params)
  File "/usr/local/lib/python3.6/site-packages/psycopg2/__init__.py", line 130, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
psycopg2.OperationalError: could not connect to server: Connection refused
    Is the server running on host "postgres" (<IP_ADDRESS>) and accepting
    TCP/IP connections on port 5432?

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "manage.py", line 26, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 356, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 283, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 330, in execute
    output = self.handle(*args, **options)
  File "/usr/local/lib/python3.6/site-packages/django/core/management/commands/loaddata.py", line 68, in handle
    with transaction.atomic(using=self.using):
  File "/usr/local/lib/python3.6/site-packages/django/db/transaction.py", line 158, in __enter__
    if not connection.get_autocommit():
  File "/usr/local/lib/python3.6/site-packages/django/db/backends/base/base.py", line 385, in get_autocommit
    self.ensure_connection()
  File "/usr/local/lib/python3.6/site-packages/django/db/backends/base/base.py", line 213, in ensure_connection
    self.connect()
  File "/usr/local/lib/python3.6/site-packages/django/db/utils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/usr/local/lib/python3.6/site-packages/django/utils/six.py", line 685, in reraise
    raise value.with_traceback(tb)
  File "/usr/local/lib/python3.6/site-packages/django/db/backends/base/base.py", line 213, in ensure_connection
    self.connect()
  File "/usr/local/lib/python3.6/site-packages/django/db/backends/base/base.py", line 189, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/usr/local/lib/python3.6/site-packages/django/db/backends/postgresql/base.py", line 176, in get_new_connection
    connection = Database.connect(**conn_params)
  File "/usr/local/lib/python3.6/site-packages/psycopg2/__init__.py", line 130, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
django.db.utils.OperationalError: could not connect to server: Connection refused
    Is the server running on host "postgres" (<IP_ADDRESS>) and accepting
    TCP/IP connections on port 5432?

This indicates that the Cyphon container can't talk to the PostgreSQL container that serves the database. Can you check the output of sudo docker ps -a to make sure the postgres container is running?

CONTAINER ID        IMAGE                                                 COMMAND                  CREATED             STATUS              PORTS                                                                                NAMES
f0f5f7183766        nginx:1.13                                            "nginx -g 'daemon ..."   24 minutes ago      Up 24 minutes       <IP_ADDRESS>:80->80/tcp, <IP_ADDRESS>:443->443/tcp, <IP_ADDRESS>:5601->5601/tcp, <IP_ADDRESS>:15672->15672/tcp   cyphondock_nginx_1
03de805ac655        dunbar/cyphon:latest                                  "../entrypoints/ru..."   24 minutes ago      Up 24 minutes       8000/tcp                                                                                cyphondock_celerybeat_1
010d938a650d        dunbar/cyphon:latest                                  "../entrypoints/ru..."   24 minutes ago      Up 24 minutes       8000/tcp                                                                                cyphondock_monitors_1
1d64886cc828        dunbar/cyphon:latest                                  "../entrypoints/ru..."   24 minutes ago      Up 24 minutes       8000/tcp                                                                                cyphondock_logchutes_1
1b5181bf5ff3        dunbar/cyphon:latest                                  "../entrypoints/ru..."   24 minutes ago      Up 24 minutes       8000/tcp                                                                                cyphondock_celeryworker_1
82f8a5a0e7b7        dunbar/cyphon:latest                                  "../entrypoints/ru..."   24 minutes ago      Up 24 minutes       8000/tcp                                                                                cyphondock_watchdogs_1
d196aeb3e7f6        gliderlabs/logspout:latest                            "/bin/logspout sys..."   24 minutes ago      Up 24 minutes       80/tcp, 5000/udp                                                                             cyphondock_logspout_1
b5f95dc026d6        dunbar/cyphon:latest                                  "/bin/sh -c $CYPHO..."   24 minutes ago      Up 24 minutes       8000/tcp                                                                                cyphondock_cyphon_1
837ee6e9f329        docker.elastic.co/logstash/logstash:5.6.1             "/usr/local/bin/do..."   24 minutes ago      Up 24 minutes       <IP_ADDRESS>:5044-5045->5044-5045/tcp, 9600/tcp                                                   cyphondock_logstash_1
9b0e57434a2a        docker.elastic.co/kibana/kibana:5.6.1                 "/bin/sh -c /usr/l..."   24 minutes ago      Up 24 minutes       5601/tcp                                                                                cyphondock_kibana_1
5f4f10139701        mdillon/postgis:9.6                                   "docker-entrypoint..."   24 minutes ago      Up 24 minutes       5432/tcp                                                                                cyphondock_postgres_1
7149d285729a        docker.elastic.co/elasticsearch/elasticsearch:5.6.1   "/bin/bash bin/es-..."   24 minutes ago      Up 24 minutes       9200/tcp, 9300/tcp                                                                           cyphondock_elasticsearch_1
4b6571998abe        dunbar/geoip                                          "crond -f -d 8"          24 minutes ago      Up 24 minutes                                                                                cyphondock_geoip_1
038e8669fe95        rabbitmq:3.6-management                               "docker-entrypoint..."   24 minutes ago      Up 24 minutes       4369/tcp, 5671-5672/tcp, 15671-15672/tcp, 25672/tcp                                          cyphondock_rabbit_1

Okay, thanks! That looks good. Can you try running the command again? It's possible you ran it before the postgres container had a chance to fully start. If it still doesn't work, can you check the logs?: sudo docker-compose logs -f postgres

Still getting errors
Last login: Wed Nov  1 19:53:59 2017 from <IP_ADDRESS>
opsadmin@cyphon:~$ sudo docker exec -it cyphondock_cyphon_1 sh -c "python manage.py loaddata ./fixtures/starter-fixtures.json"
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/django/db/backends/utils.py", line 65, in execute
    return self.cursor.execute(sql, params)
psycopg2.ProgrammingError: relation "reservoirs_reservoir" does not exist
LINE 1: INSERT INTO "reservoirs_reservoir" ("name", "enabled") VALUE...
                    ^

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "manage.py", line 26, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 356, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 283, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 330, in execute
    output = self.handle(*args, **options)
  File "/usr/local/lib/python3.6/site-packages/django/core/management/commands/loaddata.py", line 69, in handle
    self.loaddata(fixture_labels)
  File "/usr/local/lib/python3.6/site-packages/django/core/management/commands/loaddata.py", line 109, in loaddata
    self.load_label(fixture_label)
  File "/usr/local/lib/python3.6/site-packages/django/core/management/commands/loaddata.py", line 175, in load_label
    obj.save(using=self.using)
  File "/usr/local/lib/python3.6/site-packages/django/core/serializers/base.py", line 205, in save
    models.Model.save_base(self.object, using=using, raw=True, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/base.py", line 838, in save_base
    updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/base.py", line 924, in _save_table
    result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/base.py", line 963, in _do_insert
    using=using, raw=raw)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/query.py", line 1076, in _insert
    return query.get_compiler(using=using).execute_sql(return_id)
  File "/usr/local/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1107, in execute_sql
    cursor.execute(sql, params)
  File "/usr/local/lib/python3.6/site-packages/django/db/backends/utils.py", line 65, in execute
    return self.cursor.execute(sql, params)
  File "/usr/local/lib/python3.6/site-packages/django/db/utils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/usr/local/lib/python3.6/site-packages/django/utils/six.py", line 685, in reraise
    raise value.with_traceback(tb)
  File "/usr/local/lib/python3.6/site-packages/django/db/backends/utils.py", line 65, in execute
    return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: Problem installing fixture '/usr/src/app/cyphon/./fixtures/starter-fixtures.json': Could not load reservoirs.Reservoir(pk=None): relation "reservoirs_reservoir" does not exist
LINE 1: INSERT INTO "reservoirs_reservoir" ("name", "enabled") VALUE...
                    ^

opsadmin@cyphon:~$

Here's the log: postgres.dockercompose.log

Hmm, looks like Django migrations didn't run. Can you try sudo docker exec -it cyphondock_cyphon_1 sh -c "python manage.py migrate"?

Success! Thanks
opsadmin@cyphon:/opt/cyphon/cyphondock$ sudo docker exec -it cyphondock_cyphon_1 sh -c "python manage.py migrate"
Operations to perform:
  Apply all migrations: actions, admin, alerts, appusers, articles, auth, bottles, categories, codebooks, collectionqueries, companies, containers, contenttypes, contexts, couriers, database, datachutes, datacondensers, datamungers, datasieves, destinations, dispatches, distilleries, django_mailbox, filters, followees, funnels, inspections, invoices, labels, locations, logchutes, logcondensers, logmungers, logsieves, mailchutes, mailcondensers, mailmungers, mailsieves, monitors, passports, pipes, plumbers, procedures, reservoirqueries, reservoirs, samples, searchterms, sessions, stamps, streams, tags, tastes, timeframes, visas, warehouses, watchdogs
Running migrations:
  Applying destinations.0001_initial... OK
  Applying actions.0001_initial... OK

  [...]

  Applying timeframes.0001_initial... OK
  Applying watchdogs.0001_initial... OK
  Applying watchdogs.0002_auto_20170602_0914... OK
opsadmin@cyphon:/opt/cyphon/cyphondock$ sudo docker exec -it cyphondock_cyphon_1 sh -c "python manage.py loaddata ./fixtures/starter-fixtures.json"
Installed 425 object(s) from 1 fixture(s)
opsadmin@cyphon:/opt/cyphon/cyphondock$

Great! I guess the postgres container hadn't fully started when the cyphon container tried to run migrations the first time around. So restarting the cyphon container might have worked, too. Anyway, glad it's working!


Update the game over message

Update the game over message so people know how to play again!

no need to merge pull request as there are no conflicts with the existing base branch


CLOUD-59813 fixed missing cpu and memory

@martonsereg

Refer to this link for build results (access rights to CI server needed):
http://ci.sequenceiq.com//job/cloudbreak-pull-request/2754/

Refer to this link for build results (access rights to CI server needed):
http://ci.sequenceiq.com//job/mock-integration-test/245/


Support signed value for Tensor::arange

Pull Request Template
Checklist

[x] Confirmed that run-checks all script has been executed.
[x] Made sure the book is up to date with changes in this PR.

Related Issues/PRs
#1234
Changes
Make Tensor::arange and all internal methods accept a Range<i64> instead of Range<usize> to support ranges of signed value.
Testing
bash ./run-checks.sh all was passed.

A new unit test should be added to test all new edge cases (negatives and 0, overflow range).
Extra caution when casting usize to i64 because it overflow.

I think we should check if we can replace the usize by i64 instead of casting in most places.

I moved the functions about arange to int_tensor.rs, and add some test cases for 0 and negative numbers.
Regarding overflow, I don't have any good ideas. I noticed that for most cases where arange is used in the test cases, the range is taken from the shape of tensors. In this case, when an overflow occurs, I don't know what else to do but crash the program.


Add voltage functions that better calculate power to reach a given SOC

The function voltage_table_t::calculate_max_discharge_w takes q as an input, but this q is the full amount of charge left in the battery down to 0 SOC, rather than a target SOC specified by dispatch and the capacity model. Create functions in the voltage classes (or at least for the voltage table) that calculate the charge and discharge power required to reach a specific SOC, instead of just to 0 or 100%. Then use these in the dispatch classes to better enforce the SOC constraints.

This issue is a lot less prevalent after https://github.com/NREL/ssc/pull/833. Do some tests and checks in the debugger, it is possible that PR was sufficient to solve this.

A possibly related issue _Battery->energy_to_fill utilizes the nominal voltage, which can result in under-estimating the energy required to charge the battery to a given SOC. This frequently results in the battery under-charging during automated dispatch, and then needing to charge at more expensive timesteps.

Given #831 being fixed, this is now solely a dispatch optimization. De-prioritizing until we have more bandwidth for that type of work.


Add support for OSLeft and OSRight keycodes

MacOS with an English/International keyboard sends its command keys as OSLeft and OSRight instead of MetaLeft / MetaRight. This adds support for those keys so that TinyPilot treats them the same as MetaLeft and MetaRight.
Fixes #498

👍 I can confirm this fixes the issue.

[2021-02-12 15:56:59,175] INFO in socket: 63246e28ee5941089588b4ab652ac8c8: Received packet MESSAGE data 253["keystroke",{"metaKey":true,"altKey":false,"shiftKey":false,"ctrlKey":false,"altGraphKey":false,"sysrqKey":false,"key":"Meta","code":"OSLeft"}]
[2021-02-12 15:56:59,176] INFO in server: received event "keystroke" from 63246e28ee5941089588b4ab652ac8c8 [/]
[2021-02-12 15:56:59,178] DEBUG in write: writing to HID interface /dev/null: 0x08 0x00 0xe3 0x00 0x00 0x00 0x00 0x00
[2021-02-12 15:56:59,186] INFO in socket: 63246e28ee5941089588b4ab652ac8c8: Sending packet MESSAGE data 353[{"success":true}]
[2021-02-12 15:56:59,558] INFO in socket: 63246e28ee5941089588b4ab652ac8c8: Received packet MESSAGE data 254["keystroke",{"metaKey":true,"altKey":false,"shiftKey":false,"ctrlKey":false,"altGraphKey":false,"sysrqKey":false,"key":"Meta","code":"OSRight"}]
[2021-02-12 15:56:59,558] INFO in server: received event "keystroke" from 63246e28ee5941089588b4ab652ac8c8 [/]
[2021-02-12 15:56:59,560] DEBUG in write: writing to HID interface /dev/null: 0x08 0x00 0xe7 0x00 0x00 0x00 0x00 0x00
[2021-02-12 15:56:59,569] INFO in socket: 63246e28ee5941089588b4ab652ac8c8: Sending packet MESSAGE data 354[{"success":true}]

Thanks for the verification, @jotaen!


Can't clone project

Hello, I've installed PHPCI following the documentation and everything was working fine until I launched a first build. It went with the GitHub hook at first but I get the same manually.
The repository I'm tring to work with is https://github.com/mkody/miseenprod.today
I'm running PHPCI with the daemon and serving the website with nginx/1.9.9.
The SSH key is set in the Deploy keys's part of the project
(edit) And it says Last used within the last day
And that's the only thing I get:
Clonage dans '/var/www/phpci/PHPCI/build/15'...
ERROR: Repository not found.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Failed to clone remote git repository.
Exception: Could not create a working copy.

I've tried to change from "GitHub" to "Remote URL" instead on the project details, giving it the ssh or HTTP URL, no changes.
I see it creates without errors the files and the folder inside /var/www/phpci/PHPCI/build/ (15.key, 15.sh and 15/ for example).
Is there a way to know more precisely where's the problem?

Can you clone any other project? It is possible that the server blocks the port for git to the outside

I think I found where the problem is.
If you don't login with your GitHub account in the settings, the Choose a GitHub repository on the project details doesn't show up and pasting a GitHub URL was reduced to "user/repo". But I don't understand why the https url didn't work.
While trying with an other project, I got a different issue this time. Should I open a new ticket?
Clonage dans '/var/www/phpci/PHPCI/build/19'...

Working copy created: /
RUNNING PLUGIN: \PHPCI\Plugin\PhpDocblockChecker
Could not find phpdoccheck
PLUGIN: FAILED
RUNNING PLUGIN: \PHPCI\Plugin\Codeception
Exception: Warning: file_get_contents(/tests/_output/report.tap.log): failed to open stream: No such file or directory in /var/www/phpci/PHPCI/Plugin/Codeception.php line 94
PLUGIN: FAILED
RUNNING PLUGIN: \PHPCI\Plugin\PhpCodeSniffer
Could not find phpcs
PLUGIN: FAILED
RUNNING PLUGIN: \PHPCI\Plugin\PhpLoc
PLUGIN: SUCCESS
RUNNING PLUGIN: \PHPCI\Plugin\TechnicalDebt
Found  instances of TODO, FIXME, TO DO, FIX ME
PLUGIN: SUCCESS
RUNNING PLUGIN: \PHPCI\Plugin\PhpMessDetector
fatal: ambiguous argument 'Manual^!': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git  [...] -- [...]'

@mkody can you close this if the problem is sorted?

@mkody I had the same problem. How did you solve this one?


No warning /error when wrong combination of app and website used

Steps to replicate the issue
Install and open the Tonomy ID Demo app
Enter Username & Password
Open https://demo.staging.tonomy.foundation/
Click on “Login with Tonomy ID Staging“
Then click on Scan QR code with the Tonomy ID Demo app.
What do you expect to happen?
Either Username & Password are accepted or a warning  is given
What actually happens
Scan QR code is not working in Tonomy ID Demo app.
Your environment

Tonomy ID – staging

Operating system: Android 13
Tonomy ID version: 0.39.0

I think this is fixed as part of https://github.com/Tonomy-Foundation/Tonomy-App-Websites/issues/104

Retested and it is still not working @theblockstalk

make sure you have the updated Staging up from the play store @vemakoti. Then let us know if still not working.

I have retested with above version and it is working as expected.


Change IP geolocation provider to geolocation-db.com

Our current geolocation provider requires an API key and limits the number of requests. Let's switch to one that does not do that, such as geolocation-db.com

Done


Doing the complicated hbase shading logic once

Added bigtable-hbase-shaded for the shading logic, and using it from bigtable-hbase-1.*.
renaming bigtable-hbase-dataflow-tools to bigtable-hbase-shaded-for-dataflow for better clarity of the project's purpose

LGTM


Speed up Constraint Solver's overload resolution

This speeds up to 20x overload resolution and solves #343 at least the repro there mentioned.
This is what I get running the repro many times with the current version of the compiler:
val compileTime10 : float = 162.0047
val compileTime11 : float = 3463.0556
val ratio11to10 : float = 21.37626624

val compileTime10 : float = 156.0002
val compileTime11 : float = 3039.0392
val ratio11to10 : float = 19.48099554

val compileTime10 : float = 171.0647
val compileTime11 : float = 2965.9741
val ratio11to10 : float = 17.33831761

And here's what I get with this optimized version:
val compileTime10 : float = 165.0014
val compileTime11 : float = 180.0049
val ratio11to10 : float = 1.090929532

val compileTime10 : float = 158.0022
val compileTime11 : float = 182.0045
val ratio11to10 : float = 1.151911176

val compileTime10 : float = 209.0025
val compileTime11 : float = 205.0066
val ratio11to10 : float = 0.9808810899

It also seems logic to me that when exploring each possible solution, the constraint should be assumed as solved. I can't imagine a reason why not to assume that.
In case there is interest I have more complex repros with very interesting results.

@gmpl, Thanks for signing the contribution license agreement so quickly! Actual humans will now validate the agreement and then evaluate the PR.
Thanks, MSBOT;

Super, super interesting, especially since the adjustments are small
Seeing these failures - not sure why - some changes in errors/warnings may be expected but there are other failures here too
1) Failed : FSharp-Tests-Core+Members+Basics.Basics(GENERATED_SIGNATURE)
Error running command 'D:\j\workspace\release_ci_pa---866fd2c3\tests\..\release\net40\bin\fsc.exe' with args ' -r:System.Core.dll --nowarn:20 --define:COMPILED --sig:tmptest.fsi tmptest.fs' in directory 'D:\j\workspace\release_ci_pa---866fd2c3\tests\fsharp\core\members\basics'. ERRORLEVEL 1 ERRORLEVEL 1
at NUnitConf.checkTestResult(Result`2 result) in D:\j\workspace\release_ci_pa---866fd2c3\tests\fsharp\nunitConf.fs:line 14

2) Failed : FSharp-Tests-Core+Members+Basics.Basics(FSI_FILE)
Error running command 'D:\j\workspace\release_ci_pa---866fd2c3\tests\..\release\net40\bin\fsiAnyCPU.exe' with args ' -r:System.Core.dll --nowarn:20 --define:INTERACTIVE --maxerrors:1 --abortonerror test.fsi test.fs' in directory 'D:\j\workspace\release_ci_pa---866fd2c3\tests\fsharp\core\members\basics'. ERRORLEVEL 1 ERRORLEVEL 1
at NUnitConf.checkTestResult(Result`2 result) in D:\j\workspace\release_ci_pa---866fd2c3\tests\fsharp\nunitConf.fs:line 14

3) Failed : FSharp-Tests-Core+Members+Basics.Basics(FSC_OPT_PLUS_DEBUG)
Error running command 'D:\j\workspace\release_ci_pa---866fd2c3\tests\..\release\net40\bin\fsc.exe' with args ' -r:System.Core.dll --nowarn:20 --define:COMPILED --optimize+ --debug -o:test--optplus--debug.exe -g test.fsi test.fs' in directory 'D:\j\workspace\release_ci_pa---866fd2c3\tests\fsharp\core\members\basics'. ERRORLEVEL 1 ERRORLEVEL 1
at NUnitConf.checkTestResult(Result`2 result) in D:\j\workspace\release_ci_pa---866fd2c3\tests\fsharp\nunitConf.fs:line 14

4) Failed : FSharp-Tests-Core+Members+Basics.Basics(AS_DLL)
Error running command 'D:\j\workspace\release_ci_pa---866fd2c3\tests\..\release\net40\bin\fsc.exe' with args ' -r:System.Core.dll --nowarn:20 --define:COMPILED --optimize -a -o:test--optimize-lib.dll -g test.fsi test.fs' in directory 'D:\j\workspace\release_ci_pa---866fd2c3\tests\fsharp\core\members\basics'. ERRORLEVEL 1 ERRORLEVEL 1
at NUnitConf.checkTestResult(Result`2 result) in D:\j\workspace\release_ci_pa---866fd2c3\tests\fsharp\nunitConf.fs:line 14

5) Failed : FSharp-Tests-Core+Members+Basics.BasicsHw(FSI_FILE)
Error running command 'D:\j\workspace\release_ci_pa---866fd2c3\tests\..\release\net40\bin\fsiAnyCPU.exe' with args ' -r:System.Core.dll --nowarn:20 --define:INTERACTIVE --maxerrors:1 --abortonerror test.fsx' in directory 'D:\j\workspace\release_ci_pa---866fd2c3\tests\fsharp\core\members\basics-hw'. ERRORLEVEL 1 ERRORLEVEL 1
at NUnitConf.checkTestResult(Result`2 result) in D:\j\workspace\release_ci_pa---866fd2c3\tests\fsharp\nunitConf.fs:line 14

6) Failed : FSharp-Tests-Core+Members+Basics.BasicsHw(FSC_OPT_PLUS_DEBUG)
Error running command 'D:\j\workspace\release_ci_pa---866fd2c3\tests\..\release\net40\bin\fsc.exe' with args ' -r:System.Core.dll --nowarn:20 --define:COMPILED --optimize+ --debug -o:test--optplus--debug.exe -g test.fsx' in directory 'D:\j\workspace\release_ci_pa---866fd2c3\tests\fsharp\core\members\basics-hw'. ERRORLEVEL 1 ERRORLEVEL 1
at NUnitConf.checkTestResult(Result`2 result) in D:\j\workspace\release_ci_pa---866fd2c3\tests\fsharp\nunitConf.fs:line 14

7) Failed : FSharp-Tests-Core+Members+Basics.BasicsHwMutrec(FSI_FILE)
Error running command 'D:\j\workspace\release_ci_pa---866fd2c3\tests\..\release\net40\bin\fsiAnyCPU.exe' with args ' -r:System.Core.dll --nowarn:20 --define:INTERACTIVE --maxerrors:1 --abortonerror test.fs' in directory 'D:\j\workspace\release_ci_pa---866fd2c3\tests\fsharp\core\members\basics-hw-mutrec'. ERRORLEVEL 1 ERRORLEVEL 1
at NUnitConf.checkTestResult(Result`2 result) in D:\j\workspace\release_ci_pa---866fd2c3\tests\fsharp\nunitConf.fs:line 14

8) Failed : FSharp-Tests-Core+Members+Basics.BasicsHwMutrec(FSC_OPT_PLUS_DEBUG)
Error running command 'D:\j\workspace\release_ci_pa---866fd2c3\tests\..\release\net40\bin\fsc.exe' with args ' -r:System.Core.dll --nowarn:20 --define:COMPILED --optimize+ --debug -o:test--optplus--debug.exe -g test.fs' in directory 'D:\j\workspace\release_ci_pa---866fd2c3\tests\fsharp\core\members\basics-hw-mutrec'. ERRORLEVEL 1 ERRORLEVEL 1
at NUnitConf.checkTestResult(Result`2 result) in D:\j\workspace\release_ci_pa---866fd2c3\tests\fsharp\nunitConf.fs:line 14

9) Failed : FSharp-Tests-Typecheck+Sigs.sigs
Error running command 'D:\j\workspace\release_ci_pa---866fd2c3\tests\fsharpqa\testenv\bin\diff.exe' with args 'neg45.err neg45.bsl normalize' in directory 'D:\j\workspace\release_ci_pa---866fd2c3\tests\fsharp\typecheck\sigs'. ERRORLEVEL 1 ERRORLEVEL 1
at NUnitConf.checkTestResult(Result`2 result) in D:\j\workspace\release_ci_pa---866fd2c3\tests\fsharp\nunitConf.fs:line 14

Thanks for your feedback @dsyme  I had a quick look at those tests but was not able to follow the code, actually I have no clue what is being tested (and failing) there, the error messages doesn't tell that much. Since I have no time in the week I will have a deeper look in the coming weekend.

@gmpl You need to look at the test output logs in order to determine what actually failed. For example, for the first test, FSharp-Tests-Core+Members+Basics.Basics(GENERATED_SIGNATURE), the output is here (if you're wondering how I found that, it's FSharpNunit_Output.log from the Windows_NT_Release_ci_part2_Build CI results linked in this PR.
From that log, we can see that the line that caused the test to fail had this error:
tmptest.fs(1805,42): error FS0071: Type constraint mismatch when applying the default type 'DateTime' for a type inference variable. This expression was expected to have type
    'DateTime'
but here has type
    'TimeSpan'     Consider adding further type constraints

Your changes definitely cause different results from the inference algorithm here, which we can confirm for ourselves:
(* subtracting two DateTimes results in a TimeSpan *)
> let ts = DateTime.Now - DateTime.Now;;
val ts : TimeSpan = 00:00:00

(* this won't work *)
> ((DateTime.Now - DateTime.Now) : DateTime);;

  ((DateTime.Now - DateTime.Now) : DateTime);;
  -----------------^^^^^^^^^^^^

stdin(6,18): error FS0001: This expression was expected to have type
    DateTime
but here has type
    TimeSpan

(* subtracting a TimeSpan from a DateTime produces a DateTime *)
> ((DateTime.Now - ts) : DateTime);;
val it : DateTime = 2016/09/14 3:20:01 {Date = 2016/09/14 0:00:00;
                                        Day = 14;
                                        DayOfWeek = Wednesday;
                                        DayOfYear = 258;
                                        Hour = 3;
                                        Kind = Local;
                                        Millisecond = 52;
                                        Minute = 20;
                                        Month = 9;
                                        Second = 1;
                                        Ticks =<PHONE_NUMBER>10529801L;
                                        TimeOfDay = 03:20:01.0529801;
                                        Year = 2016;}

(* the inference result without this PR for line 1805: *)
let f2 (x:DateTime) y : DateTime = x - y;;
val f2 : x:DateTime -> y:TimeSpan -> DateTime

(* and line 1806: *)
> let g2 (x:DateTime) y : TimeSpan = x - y;;
val g2 : x:DateTime -> y:DateTime -> TimeSpan

@drvink  Thanks a lot for the explanation.
Before doing this pull request I simplified a lot my original code which was more invasive than this.
I'm afraid I didn't test it so well, my fault, I wish I had infinite time.
But the good news is that apparently my original code pass those tests, I think I oversimplified it and broke the type inference in the last step.
So don't lose the hope, I will need some more weekends to clean-up the working code or find what's wrong with this simplification ... but in the end it will work  ;)

Now the adjustments are not that small if you look at the number of lines changed but in fact the logic change is still small, I just introduced an additional argument to pass the member constraint solution and apply it later, when all the inference equations are already in place.

Didn't you have a extra repro sample? Can you please add it as a test?

@forki Do you mean as a test constrained by the compile time? If so, can you point me to similar tests already in the solution?

@gmpl I think I meant the sample given in https://github.com/Microsoft/visualfsharp/issues/351 - does your pr fix it as well? If so then please try to add it as a test.

@forki It doesn't "fix" the results. They are the same but it compiles it 20 times faster. I'm not sure if there are tests over the compile time in the solution.

@dsyme Another alternative is rather than adding an additional parameter to the function, add a property in the Solver State to store the constraint solution until we commit it. That change will be quite small in terms of lines of code and function signatures. What do you think?

@gmpl I will try to run that experiment: https://github.com/Microsoft/visualfsharp/pull/1550

@gmpl can you please merge #1550 into this PR? Then I can close it.

@forki Now I see you were referring to another issue, I was thinking in the other one but they were marked as duplicate. So yes I will have a look tonight and try to merge it. Please leave it open for today, thanks.

@forki Do you know why all test failed after merging your test?
I mean, I can see the error message, but I wonder why it was passing before, you just added code for that specific test.

Unable to find version '14.0.24516-Pre' of package 'VisualCppTools'.
that's nuget hickup, completely unrelatd to the merge.
@dotnet-bot test this please.

@maartenba sorry for asking you again. ;-)
00:36:29   NotFound https://api.nuget.org/v3-flatcontainer/visualcpptools/14.0.24516-pre/visualcpptools.14.0.24516-pre.nupkg 257ms
00:36:29   NotFound https://myget-2e16.kxcdn.com/artifacts/fsharp-daily/nuget/v3/flatcontainer/visualcpptools/14.0.24516-pre/visualcpptools.14.0.24516-pre.nupkg 683ms
WARNING: Unable to find version '14.0.24516-Pre' of package 'VisualCppTools'.
Any ideas why this thing is not available?

ok just saw @KevinRansom was already fixing this in master. https://github.com/Microsoft/visualfsharp/commit/4d87596bd24f956b4599ed15f1c4cfcf321086de
so @gmpl please rebase this PR

mmm I tried to rebase https://github.com/Microsoft/visualfsharp/pull/1552 - but get the same error. so seems master is broken as well.

ok. last hope is @maartenba

@forki which feed did this package come from?

I have no idea. I tried to find out by looking into older builds but without luck

https://blogs.msdn.microsoft.com/vcblog/2016/02/16/try-out-the-latest-c-compiler-toolset-without-waiting-for-the-next-update-of-visual-studio/ suggest it was available on nuget.org

sorry. it says:

but that's gone as well!?

@gmpl Could you explain more why it's correct to put this logic in SolveTypeEqualsType?  Why there?
For example, SolveTypeEqualsType has a shortcut case  if ty1 === ty2 then CompleteD else based on pointer equality of two types.  But the code you've added won't be hit on that path, will it?
I just don't yet grok why SolveTypeEqualsType is the right place, thanks

@dsyme Logically the solution would be committed at the beginning of the selection of the method, that's what I did on the first commit but it didn't work for all scenarios.
Why it didn't work?
I don't understand all the details, I wish there was more documentation about the constraint solver, but I know that in some situations resolving a type early will mislead to unsolved types, typical examples are when there are few overloads of a method.
So the solver needs to pretend it doesn't know the solution for the constraint at the beginning, in order to come up with more type equations, then the question is where do we commit the solution? Well, it has to be somewhere before calling to ResolveOverloading again, ideally before solving and adding more constraints, that place is SolveTyparEqualsTyp right before SolveRelevantMemberConstraintsForTypar is called.
But since that function is only called by SolveTypEqualsTyp I think it's safe to commit the solution there.
I tried adding it at the very beginning of the function body, but I have a (very exotic) test code that failed, moving it right before the shortcut case you mention solved the issue without slowing back down the other scenarios. So it can be (and maybe should be) 3 lines more up in the code but not before the shortcut. I guess this is because when the types are the same it returns to the caller without having solved anything else but with the constraint solution committed, which as I tried explaining is misleading.

@gmpl please rebase on master and force push in order to solve the build issue

@dsyme Here's another viewpoint, maybe that's not the best place and it should be as you suggested, before the shortcut.
The fact that just a piece of very exotic code was compiling before without type annotations shouldn't prevent us to write those lines in the right place.
Personally I'm fine if that code breaks from now on, anyway it also breaks with a minimal change in the definition of <*> , so it might be working just by chance. And I don't think you will find code like that in production projects.
For that particular case we can work later on another PR, because there are many cases like that not compiling and that's something that can be improved in the type inference.

@gimpl What was the example code that broke when your insertion was before the shortcut line? Thanks
Re needing to do things late - yes, I imagine that in method overload resolution there are some pathological cases where operations are not fully monotonic w.r.t. adding constraint solutions - so for example adding a new constraint solution (which was eventually being deduced originally) earlier leads to the solver going down paths it wouldn't have otherwise gone down, and deriving conflicting information.

@dsyme Yes, that's probably the case of the example code.
I linked it in my comment, it's somewhere in a script in FsControl, in this line.
Also this line fails and if you play a bit with those idioms and generic code most likely you will find more cases, but as I said I'm fine if that code breaks from now on.
I will try to come up with a minimal repro for those cases.
Apart from those pathological cases I didn't find any other piece of code that breaks, and I tested it with many different and exotic snippets.

@forki  I rebased last night and Windows_NT Release_ci_part1 Build failed. Just did it again and now is AppVeyor the problem.
None of these problems seems to be related to this enhancement.

@dsyme Here's the minimal repro.
Now this is even more exotic than what I thought. I tested the FsControl sample file I sent you before with the "before shortcut version" and it works.
I investigated what was the difference with my local script and found that my local script has a <*> definition which doesn't use overloads.
So, if you use the "full version" works fine.
I also did some other tests and found that the "before shortcut version" speeds up even more (but just a little bit) some local tests I have.
Now this convinced me that we should commit the solution before the shortcut and investigate this corner cases as a separate thing.

Huge thanks to @gmpl and @dsyme for this. I'm so happy this is fixed!

excellent news!

@gmpl since you're the new typechecking pro maybe you can put this parallel typechecking algorithm to work for us?

I'm trying compiler built from master and there are some errors on my large solution. The first one:
// in Processes.fs
namespace Foo

type ProcessError =
    ...
    | CannotStart of string * exn
    | DoesNotExist of PID

// in Supervisor.fs, which lays below Processes.fs
namespace Foo

type DeadStatus =
    | DoesNotExist
    | CannotLaunch
    ...

(note that both types have DoesNotExist case, but one of them carries PID` value).
It compiles OK with F# 4, but does not with master:
(open Foo ...)

I thing name resolution order has changed - old compiler picked first definition among symbols with same name while the new one picks last one.

After fixing compilation errors, the timings are as following:

wow

@forki half of projects are C#, so the speedup on a pure F# solutions will be even more significant.

that's amazing

I wonder if it will have much difference on type checking during IDE, I guess it needs to be back ported to FCS to test.

AFAIK this PR speed ups the type checker specifically, so FCS should speed up even further as it does not do byte code generation.

hopefully parallelism can speed it up to the point where people stop complaining about how slow the compiler is 😸

@cloudRoutine for IDE? Yes, I hope. As for building, it's already parallized by msbuild/VS, so CPU is about 100% load.

@vasily-kirichenko  no I mean parallelizing the actual process of typechecking

@cloudRoutine That would be very interesting, unfortunately I can only work on weekends.
Anyway I'm still not happy with the code, I think before going parallel we should make the solver algorithm more consistent.
I'm convinced it can speed up some more and it can also be smarter, there are many cases where it's not able to solve and should be possible.

@vasily-kirichenko I don't think this optimization changed the name resolution order, there were other important changes since F# 4.0 that most likely did that. Did you check with the previous version before this commit?
Nice to hear that your project compilation speeds up a lot, do you use FsControl or a do you use a lot of this kind of overloaded functions there?
I tried to compile FsControl, before it was taking 2' 30'' and now with this version it takes only 30 secs :) Anyway I think the FsControl.dll compilation is not the part that will benefit the most from this optimization.
The sample scripts should speed up more, I still have to test and compare them.

@gmpl @forki @vasily-kirichenko It's crucial that we determine where name resolution changed in F# 4.1 as soon as possible, and if possible revert it to previous behaviour.
@gmpl @vasily-kirichenko If there's any chance you could do a binary chop on the commits for F# 4.1 to determine where name resolution changed that would be awesome.  It might be that using the commit history for http://github.com/fsharp/fsharp may be easier.
@forki Could you carefully check if your name resolution changes altered the order of name resolution results in cases like the above

@vasily-kirichenko can you come up with a repro case?

https://github.com/Microsoft/visualfsharp/pull/1530#issuecomment-254467693?

@vasily-kirichenko I tried to put that into a test: #1652
Looks like it resolves fine for me on master:

Maybe it behaves differently if files compiled as part of a project?

Does it work the same in F# 4 FSI?

@forki It might need to have the two namespace fragments in one file
Come to think of it, I think this may have been a deliberate bug fix, see this commit - I do recall fixing an inconsistency when combining namespace fragments from a single file.  It might even have been that the effective combined declaration order flipped every time a "combine" happened.
If so I suppose we would be OK with this being a breaking change

Tbh I think this case was always the same and I think the current behavior is correct. @vasily-kirichenko can you try to modify my sample so that it breaks for you?

@forki I tried to reproduce it on a minimal project and failed. Also I benchmarked 4.0/4.1-before-optimization/4.1-master compilers by compiling FCS project and all of them showed identical results (~42 seconds). Now I'm not sure why my large solution is compiled more than 2x faster on master compiler. I switched between 4.0 and master ones several times and it's reliably reproduced. Can it be some mess with ngen or the like?

@vasily-kirichenko if your solution doesn't make use of constrained overload resolution I don't see why it would speed up that much with this PR. But if it does, even in a relative small number it could have improved, since some cases were taking insane compile time.


Add various nodePackages

Motivation for this change
Things done

[X] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[ ] NixOS
[X] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Relase notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

@SuperSandro2000 A friendly ping, and I have merged the commits from upstream to latest.

Closing this as no response.


Missing listener when stop audio and play again on iOS

I tried to stop the audio and after that, i play the same link then the audio running with duration i stop before and all listener is missing on iOS. Could you check that issue?

In the example app I was calling stop() on onComplete() causing the event listeners to clear. Removing that fixed the issue.

When i stop player myself and replay, no any trigger from observer and if i stop it again i get crash on iOS.


Create github-actions-workflow for Cypress testing suite.

Reason/Context

For last few months I was working on creating a complete testing suite for the website which was necessary to make it easier for code maintainers to review and new contributors to contribute to the code .
Now to automate these tests , this PR creates a Github actions workflow , that shall a PR is initiated on AsyncAPI website . This would automatically trigger the workflow and all the created tests would start running .
Automate the testing suite

Description

Created a additional workflow yml file for this
No this is not a breaking change .

This is for GSOC and I shall be working on this


Delete the broken link for chef-ha-drbd plugin.

Signed-off-by: Prajakta Purohit<EMAIL_ADDRESS>We hit a bug during upgrade to chef infra server 13 : https://github.com/chef/chef-server/issues/1684
Issues Resolved
Fix for #1684
Check List

[ ] New functionality includes tests
[ ] All tests pass
[ ] All commits have been signed-off for the Developer Certificate of Origin. See https://github.com/chef/chef/blob/master/CONTRIBUTING.md#developer-certification-of-origin-dco

Building at: https://buildkite.com/chef/chef-chef-server-master-omnibus-adhoc/builds/239#069b106e-94a5-4ca3-a86f-dcc5a1ac9aa2


chore(ci): correctly deploy code and docs on version branches and tags

Previously, the generated build artifacts and docs were only deployed for builds associated with the master branch. There was also a latest branch mentioned in the config, but there is normally no such branch, so this had no effect.
This commit fixes the rules so that deployments happen when necessary.
More specifically:

The deploy-code job now runs for builds associated with:

The master branch.
The stable branch (i.e. the branch from which the version tagged as @latest on npm is released).
Tags of the form v1.X.Y(-Z). (This also required configuring CircleCI to run builds for git tags, which does not happen by default.)

The deploy-docs job now runs for builds associated with:

The stable branch (i.e. the branch from which the version tagged as @latest on npm is released).

The new rules for when deployments should take place are based on the logic previously in .travis.yml and scripts/travis/build.sh (from before we switched from Travis to CircleCI).

@gkalpak Thanks much for doing this work for the old framework that is Angular1.x.
Are we waiting on some before it can be merged? I don't want to be pushy, but I am curious as to the 1.8 version of the docs is what is referenced from the main site, and I believe is treated as source of truth for LTS/support.

@g-patel most like we'll need @petebacondarwin to review this and approve it as well.
FYI: the AngularJS LTS blog post was updated to include the Covid-19 extension of the LTS.

@g-patel most like we'll need @petebacondarwin to review this and approve it as well.
FYI: the AngularJS LTS blog post was updated to include the Covid-19 extension of the LTS.

Thanks for reply @Splaktar. Good to know that the blog post has been updated. 👍


Update to newer version of numpy

The current version seems to be lower for numba support but this seems outdated.

Using latest version of numpy and numba seems to be fine


use alternate port for CPython example

Follows up on #76, specifically @FoamyGuy's note that sudo is required.

Thank you @tedder
This version does run without sudo.
One other thing I noticed now is that after running the script and then stopping it, if I attempt to run it again this exception is raised:
❯ python httpserver_cpython.py
Traceback (most recent call last):
  File "/home/timc/repos/circuitpython/Adafruit_CircuitPython_HTTPServer/examples/httpserver_cpython.py", line 23, in <module>
    server.serve_forever("<IP_ADDRESS>", 5000)
  File "/home/timc/.local/lib/python3.10/site-packages/adafruit_httpserver/server.py", line 185, in serve_forever
    self.start(host, port)
  File "/home/timc/.local/lib/python3.10/site-packages/adafruit_httpserver/server.py", line 213, in start
    self._sock.bind((host, port))
OSError: [Errno 98] Address already in use

In this case I had changed "<IP_ADDRESS>" to "<IP_ADDRESS>" after "using up" a few ports on "<IP_ADDRESS>" in order to see if they'd also be blocked with the 127 address. I was able to re-use the same port once on the 127 address, but then if I stopped and started again it would be in use error.
It seems that each pairing of IP + Port is getting held onto by something and is ineligible for re-use.
I'm not sure if it will help, but it might be worth trying the polling method rather than serve_forever(), perhaps that will be be better able to free the resources associated with the IP+Port.

It appears that the resources do get freed after a few minutes. I tried again after 2-3 minutes and it was able to run, but after stopping it goes back to having the error of address in use if you run again without waiting for 2-3 minutes.
If there is any way to modify the example code and/or library code to make it so these get freed whenever the script is stopped with KeyboardInterrupt I would be in favor of that.

In theory, that is what should be happening.
https://github.com/adafruit/Adafruit_CircuitPython_HTTPServer/blob/main/adafruit_httpserver/server.py#L191
The login in Server.stop() should be able to do just that by calling self._sock.close(), maybe there is something missing there.

https://docs.python.org/3/library/socket.html#socket.socket.close
close() releases the resource associated with a connection but does not necessarily close the connection immediately. If you want to close the connection in a timely fashion, call shutdown() before close().
Maybe there should be a .shutdown() before .close()? I canot test right now but seems like this might be the issue.

I managed to test my first idea, turned out that it was not it, but this version might be the the solution:
https://github.com/michalpokusa/Adafruit_CircuitPython_HTTPServer/tree/cpython-fix
Works correctly on my machine, additional tests would be appreciated.


Problem with different then konami :/

whe i try diferent code then conami something like force= 70-79-82-67-69 dont work

Seems weird.
Could you paste a code example so I can check ?

      return {
        opts: {
          timeout: 3000,
          chain: '70-79-82-67-69',
        },
      }
    },

      easterEgg() {
        console.log('I\'m a totally useful easter egg.')
      },

Ok, in order to use the custom opts property, you have to set it on the v-konami directive.

This should work, could you confirm ? :)

@d-kalh it works perefectly thx :)