URL encoding rework

Thanks! Merging.

@s-ludwig thanks! #1143 has been rebased. Please, comment it.


Fixed #18: Can't set the "IsEnabled" property of the slider control to false

By removing the "Disabled" visual state, the control works when setting IsEnabled to false.
I guess this is a left-over from the default slider control template, so hopefully the visual state isn't needed at all.
This fixes #18.

I confirm that this fixes the bug and it doesn't seem that the visual state is needed.
Also I think that the disabled state of the slider should be a bit more noticeable than just graying out the thumb.

Yeah, the disabled state is barely noticeable with only the thumb being grayed out. I think the parts removed by this pull request were initially thought for improving this, but they are not finished yet. IMHO it's better to not crash the application when IsEnabled = false until this is implemented, hence my pull request ;-)

Since I rely on the IsEnabled state of the slider in my current project, I think this should definitely be pulled

Like many of the styles, the Slider style was originally imported from the Cosmopolitain theme pack for Silverlight. Also like many of the styles, it didn't work at all so I had to convert it. I guess I didn't test IsEnabled when getting the rest of it working.


re-enable deployment tests

Currently there are deployment tests disabled which depends on some resteasy components that haven't been uploaded before. Will fix this after RESTEasy side work is done.

The tests failed in PR currently:

A local debug shows that currently the server can't be started by arquillian:

I'll dig more into this issue.

Setting more breakpoints shows following error:
￼

So it's some parameter setting problem.

I removed some properties:
https://github.com/resteasy/resteasy-spring/pull/5/commits/3ef0650b890fba4a8ad4f0c6c53055aa01858cf7
and now the error is:

Tests work partially:

The failed tests are caused by GAV change. We need to do some work at wildfly module side.

enabling deployment test has this problem:

directly using cli has no problem:


Update PORT variable to CAMO_PORT

There are many different applications which could be trying to use an environment variable simply named 'PORT'. Since all of the other possible Camo variables are already prefixed with "CAMO_" I felt that this should match with the others too. Tested this change within a production environment using Docker.

Gonna stick with PORT here since it's really meant to be run on heroku and that's the default env var that's exposed there.

That, and it'll break existing installations including mine.
And it is best that you run applications in their own environment.

@atmos fair enough, updates to Camo are fairly infrequent so it'll be quite easy to maintain my own copy with this modification anywa. :smile:
@Jeroen52 yes, that would unfortunately be a downside. Out of interest are you actually running Camo on another port that isn't the default? Do you have a use case for doing so or is it simply that another process requires the use of that port?

@kawaii I'm running Camo on port 9090, I think that 8081 was used by some different application, I think Shoutcast but I'm not sure.
Great name, by the way.


Issues with artifact removal

I know this is a oneoff package, but I've found this really helpful and I can't seem to debug this myself (otherwise I'd open a PR).
The PkgCleanup.manifests() command worked great, but when I tried running PkgCleanup.artifacts(), it said that it removed things, but gc didn't find anything to remove and the artifacts showed up again when I reran artifacts().
I'm on Julia 1.6.0 on Win10.

UPDATE: this is actually the same issue as #1 , I'm closing this.


Add editing keys to both panels, now you must use the context menu for edit actions

If I want to select code o paste or copy I must use the contexte menu, but it's easiest if I coudl use the short-cut keys:
For example Ctrl+A for select all the text.
It's shown in the context menu but isn't works.
Thank you.
Guillermo

@elGuille-info that used to work I need to find out when it broke. I will look this week.

@elGuille-info  Fixed in <IP_ADDRESS>/<IP_ADDRESS>

@elGuille-info  Fixed in <IP_ADDRESS>/<IP_ADDRESS>


launchPackager.command in new window doesn't use same node version

What's going on?
When I run on a machine where my default node version is fairly old (4.9.1), I switch to 10.15.0 using nvm.  Problem is, the new terminal that launches the launchPackage.command function, uses my default version of node and fails.  There should be a simple way (maybe using .nvmrc) you check to see if the version of node in the "popup" is the same as the original version and change it.
Steps to reproduce

set nvm default to older version of node (like 4.9.1)
call nvm use to use a newer version of node (like 10.15.0)
launch your app using react-native run-ios
observe error in popup that the version of node is not correct.

ignite doctor results:
ystem
  platform           darwin
  arch               x64
  cpu                12 cores                                       Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz
  directory          /Users/redwards/Projects/Playground/PizzaApp

JavaScript
  node               10.15.0      /Users/redwards/.nvm/versions/node/v10.15.0/bin/node
  npm                6.4.1        /Users/redwards/.nvm/versions/node/v10.15.0/bin/npm
  yarn               1.13.0       /usr/local/bin/yarn

React Native
  react-native-cli   2.0.1
  app rn version     0.57.8

Ignite
  ignite             2.2.2           /usr/local/bin/ignite
  boilerplate        ignite-bowser

Android
  java               11.0.2       /usr/bin/java
  android home       -            undefined

iOS
  xcode              10.1

Hey @raedwa01 , thanks for reporting! My recommendation is to run the packager yourself using react-native start in a command window that already has nvm set properly.
I'm going to close this issue as it is not Ignite-specific. You may want to open an issue over at https://github.com/react-native-community/react-native-cli.


Class template specialization vs inherited struct as kernel parameter

Hi, the following code:
template <unsigned Size, class Ty> struct Vector {
    Ty data[Size] = {};
};

#ifdef USE_INHERITANCE
struct Vector2f : Vector<2, float> {};
#else
using Vector2f = Vector<2, float>;
#endif

kernel void k(global float *out, global Vector2f *in2) {
    auto index = get_global_id(0);
    out[index] = in2->data[0];
}

compiles only if Vector2f is a record declaration inheriting from the class template specialization. Using the class template specialization directly as a kernel parameter results in an error.
I don't think this limitation is intended.
godbolt link: https://godbolt.org/z/jxYEn1jYq

As shown in the output of clspv in compiler-explorer:
error: '__global Vector2f *__private' (aka '__global Vector<2, float> *__private') cannot be used as the type of a kernel parameter

It seems that declaring Vector2f  with the using keyword makes it a private pointer. Private pointer cannot be a kernel parameter.
If there is an error, it feels like a clang error more than clspv.

Hi @rjodinchr, thanks for the quick reply. The error persists also if you use the specialization directly as a kernel param, so I don't think it's the using's fault:
kernel void k(global float *out, global Vector<2, float> *in2) {
    auto index = get_global_id(0);
    out[index] = in2->data[0];
}

same error:
error: '__global Vector<2, float> *__private' cannot be used as the type of a kernel parameter

Alright, but still this is something related with clang not clspv I believe.

Yeah, seems to be the case: https://godbolt.org/z/5aMqvxoqT
Thanks, I'll raise this on the llvm side.


Command index broke dev_sources workflow

ARO has the following CI workflow:

install latest released az
update [extension] dev_sources in .azure/config in order to override the core 'aro' module with a local 'aro' extension
run az aro ... to test it

As far as 2.10.1, this worked fine (when we did this, the local 'aro' extension would run, not the core 'aro' module).
In 2.11.1, we find that the above behaviour does not work any more.  A workaround we found is to delete .azure/commandIndex.json to force it to be refreshed.
When we do that, we can see that the following diff happens to commandIndex.json:
--- old	2020-08-31 16:02:23.397858250 +0000
+++ new	2020-08-31 16:02:28.322865042 +0000
@@ -39,6 +39,7 @@
       "azure.cli.command_modules.appservice"
     ],
     "aro": [
+      "azext_aro",
       "azure.cli.command_modules.aro"
     ],
     "backup": [

Is this a regression that needs to be fixed in az, or do we need to permanently change our behaviour?  Is there a better workaround than to delete commandIndex.json?
Environment Summary
Linux-5.7.11-100.fc31.x86_64-x86_64-with-glibc2.2.5
Python 3.8.5
Installer: RPM

azure-cli 2.11.1

Extensions:
aro 1.0.0 (dev) /root/go/src/github.com/Azure/ARO-RP/python/az/aro

Additional Context

@jiasli please could you take a look at this question?

Command index

This is a known issue of command index that when underlying extensions are manually updated, either by running azdev extension add or editing related files or configs like [extension] dev_sources in ~/.azure/config, command index will not detect the change and use the old index. This is not something command index can detect and handle.
There are 2 ways to fix it:

Manually deleting ~/.azure/commandIndex.json to force it to be refreshed.
Use [core] use_command_index to disable command index:
https://github.com/Azure/azure-cli/blob/814598f5e8fe3d0e418f0be392a0f2984b6bd215/src/azure-cli-core/azure/cli/core/__init__.py#L385

Please let me know if these approaches can fix your issue.
BTW, this known issue won't affect real users as CommandIndex has a invalidate method which is called when adding extensions via az extension add.
https://github.com/Azure/azure-cli/blob/814598f5e8fe3d0e418f0be392a0f2984b6bd215/src/azure-cli-core/azure/cli/core/__init__.py#L571-L585


MXNet C++Interface reasoning leads to CPU memory leak

I am using the c++ interface of mxnet to carry out the reasoning of mtcnn algorithm for face detection.
Environment: Ubuntu16.04.1 + GPU cuda9.0 + MXNet1.3.0
I use the interface: MXPredCreate MXPredReshape MXPredForward MXPredFree...
When I used a lot of pictures for stress testing (running for a long time), I found that my process occupied more and more CPU memory, and eventually it occupied all the memory.
My process was forced to kill by the system.
Later, I wrote the program To Test:

If only do MXPredCreate, then MXPredFree, and MXPredCreate gives different width and height.
After 100 thousand cycles, memory will increase by 1G
If you do MXPredCreate, and then MXPredReshape to change the width and height, so that the continuous cycle, found that memory leaks very quickly, less than half an hour to leak 4G.
Do you want to invite MXNet's main developers to find this problem? Please track it down for me. It has been bothering me for almost a week.

@mxnet-label-bot add [C++, Memory, Bug, Pending Requester Info]
Thanks for raising the issue @chenyujing1234. Can you provide a bit more info so we can better help?
Environment info (Required)
What to do:
1. Download the diagnosis script from https://raw.githubusercontent.com/apache/incubator-mxnet/master/tools/diagnose.py
2. Run the script using `python diagnose.py` and paste its output here.

Build info (If built from source)
Compiler (gcc/clang/mingw/visual studio):
MXNet commit hash:
(Paste the output of git rev-parse HEAD here.)
Build config:
(Paste the content of config.mk, or the build command.)
Minimum reproducible example
Can you share the code for the program that you used to test the memory leak?

@mxnet-label-bot update [Bug, C API, Memory, Pending Requester Info]

You can get my test code from this address. TKS
https://pan.baidu.com/s/19Wtd_Cf1BGF-2MS3le1mYA

@mxnet-label-bot update [Bug, C API, Memory, Pending Requester Info]
You can get my test code from this address. TKS
https://pan.baidu.com/s/19Wtd_Cf1BGF-2MS3le1mYA

@chenyujing1234 Would you be able to post some sample code, that when run in a loop will leak? If we can run this for a fixed number of iterations (say 1234 loops) we should then be able to look with an ASAN build and see what's leaking.

You can get my test code from this address. TKS
https://pan.baidu.com/s/19Wtd_Cf1BGF-2MS3le1mYA

@mxnet-label-bot add [C++, Memory, Bug, Pending Requester Info]
Thanks for raising the issue @chenyujing1234. Can you provide a bit more info so we can better help?
Environment info (Required)
What to do:
1. Download the diagnosis script from https://raw.githubusercontent.com/apache/incubator-mxnet/master/tools/diagnose.py
2. Run the script using `python diagnose.py` and paste its output here.

Build info (If built from source)
Compiler (gcc/clang/mingw/visual studio):
MXNet commit hash:
(Paste the output of git rev-parse HEAD here.)
Build config:
(Paste the content of config.mk, or the build command.)
Minimum reproducible example
Can you share the code for the program that you used to test the memory leak?

You can get my test code from this address. TKS
https://pan.baidu.com/s/19Wtd_Cf1BGF-2MS3le1mYA

Great bug report @chenyujing1234.  Really appreciate the details.  I'll take a look at this on a best-effort basis (might take a while to verify the leaks on my end).
If anyone else from the community has time to jump on this I think it'd be very useful.  I've seen a lot of reports of leaks from users.

Are you using a mxnet version that contain MKL-DNN?

Great

Now my project is stuck here, waiting for your reply. Thank you

Any chance you could paste the reproducing code on gist.github.com?

Looks like I need to install an app to access the files, but no worries, I can likely download the code with a colleague tomorrow.

@KellenSunderland
I uploaded the test code attached by @chenyujing1234  to google drive , you can get it  by this link

Looks like I need to install an app to access the files, but no worries, I can likely download the code with a colleague tomorrow.

I Build ASAN versin, and test, Found memory leak.
the log is :
https://gist.github.com/chenyujing1234/0449ecf6f502e5c3538e4f2f018a04e1

Great work, looks like the ASAN build is setup right and detecting errors.  What I would do now is run the offending code in a loop with a fixed number of iterations, then look for a leak that has a multiple of that number.  If there's a genuine leak it should be present there.  For example you could run MXPredCreate, MXPredReshape, MXPredForward and then MXPredFree in a loop 123 times, then look for mem leaks with a multiple of 123 instances.
This guide may also help you:
https://cwiki.apache.org/confluence/display/MXNET/Detecting+Memory+Leaks+and+Buffer+Overflows+in+MXNet

Great work, looks like the ASAN build is setup right and detecting errors. What I would do now is run the offending code in a loop with a fixed number of iterations, then look for a leak that has a multiple of that number. If there's a genuine leak it should be present there. For example you could run MXPredCreate, MXPredReshape, MXPredForward and then MXPredFree in a loop 123 times, then look for mem leaks with a multiple of 123 instances.
This guide may also help you:
https://cwiki.apache.org/confluence/display/MXNET/Detecting+Memory+Leaks+and+Buffer+Overflows+in+MXNet
Some of my test code need to be modified, otherwise the memory overflow error will be reported.
include/mxnet_mtcnn.hpp
42             buffer_.reset(new char[length_ + 1]);
43             ifs.read(buffer_.get(), length_);
44             ifs.close();
45             buffer_[length_] = '\0';

Great work, looks like the ASAN build is setup right and detecting errors. What I would do now is run the offending code in a loop with a fixed number of iterations, then look for a leak that has a multiple of that number. If there's a genuine leak it should be present there. For example you could run MXPredCreate, MXPredReshape, MXPredForward and then MXPredFree in a loop 123 times, then look for mem leaks with a multiple of 123 instances.
This guide may also help you:
https://cwiki.apache.org/confluence/display/MXNET/Detecting+Memory+Leaks+and+Buffer+Overflows+in+MXNet

Has any result ?

Great work, looks like the ASAN build is setup right and detecting errors. What I would do now is run the offending code in a loop with a fixed number of iterations, then look for a leak that has a multiple of that number. If there's a genuine leak it should be present there. For example you could run MXPredCreate, MXPredReshape, MXPredForward and then MXPredFree in a loop 123 times, then look for mem leaks with a multiple of 123 instances.
This guide may also help you:
https://cwiki.apache.org/confluence/display/MXNET/Detecting+Memory+Leaks+and+Buffer+Overflows+in+MXNet

I've solved one the memory leak problem caused by using reshape functions in the CPU version.
Cause:  PredictorHandle object is not released after calling Reshape.
But there will still be memory leaks in reasoning on gpu, but I don't know how to compile the version of ASAN. Can you help me to compile the version of ASAN of GPU-cuda 9.0?

Now GPU reasoning will still have memory leaks, troubled for two weeks, now want to go online, but stuck here. I don't know what you got there?

You can drop reshape to avoid this.

I found the same issue. Every time I do reshape first and Free the reshaped handle. However, mem usage increased very quickly. My mxnet version is 1.2.1rc1, built with mkldnn. The issue both appeared in mac os and ubuntu. @chinakook If drop reshape, must call MXPredCreate  every time before do infer. Would there be a performance issue? Or it seems that i could prepare a few fixed size models for dynamic input.

Create a fixed model for the biggest size of input image, and pad every image to this biggest one.

Finally, it was found that because the original Pred object was not released when Reshape Function was called, it would not be leaked if it was released.

@chenyujing1234 can you please let us know if the issue is fixed? If it is we can close this issue.
Thanks,

@mxnet-label-bot add [Pending Requester Info]

I also got the memory leak ,  call like this :
MXPredCreate()
MXPredSetInput(x);
MXPredForward(x); //memory leak
MXPredFree(x);
, when I mask the call :  MXPredForward(),  the mem leak will not turn up(memory use do not grow).

I tried to reproduce the memory leak with an ASAN build and don't see anything that jumps out as a leak.  There's a number of data structures allocated and then not released, but these structures don't seem to increase over time/iterations.
My could sample runs a simplification of the image-classification demo.  A snippet of the code tested for leaks is here: https://github.com/apache/incubator-mxnet/blob/8e2c0adb61b5f5ceee4d090f1413c8697a61e008/example/image-classification/predict-cpp/image-classification-predict.cc
The results reported by ASAN are here: http://jenkins.mxnet-ci.amazon-ml.com/blue/rest/organizations/jenkins/pipelines/mxnet-validation/pipelines/miscellaneous/branches/PR-13917/runs/14/nodes/137/log/?start=0
What I would expect to see if there was a genuine leak in my code would be an ASAN leak summary that would report leaked objects that are some multiple of '1234', my iteration size.  I don't see any objects that look like they were leaked as part of a MXPredCreate/MXPredForward/MXPredFree iteration.
What I did notice is that the image-classification sample has a buffer overflow as a result of not properly null-terminating the char* array containing the symbolic graph description.  I'll see if I can submit a PR to fix that, and if anyone is basing their code on this sample please make sure that the symbol buffer you pass into MXPredCreate is null terminated.
If others are still having problems with leaks, would you be able to post a small sample that replicates the leak?  That way others can have a look at your specific sample to determine where this leak is coming from.

@KellenSunderland I found the memory leaks in ASAN reports of image classification example mainly come from https://github.com/apache/incubator-mxnet/blob/master/src/common/object_pool.h#L135
Why commented out the free operation?

@arcadiaphy I'm relatively new to the code base so take this with a grain of salt, but my guess is the following:

Memory allocation on GPU is expensive so MxNet doesn't really free it during the life of the program, they re-use it using their custom allocator pool
They could free the memory at program exit when the allocator pool gets destructed but:
a) Who cares, if the program is exiting anyway, let the OS take care of re-claiming the memory
b) As the comment in the code you pointed out mentions, they need to be careful that they don't free the memory until after all other destructors that might still have pointers to the memory try to access it; if there are global variables or something then destructor order can be tricky and why bother anyway because of (a)

Actually just dug a little more and saw this comment:
https://github.com/apache/incubator-mxnet/blob/149d8105ea3c4dfd63c3c7e25b3be1e4c4f2ec45/src/engine/threaded_engine.h#L543-L549
That points here:
https://github.com/apache/incubator-mxnet/issues/309
So my guess is my explanation is probably mostly correct.

@stephenrawls The object pool is used to quickly allocate variables when threaded engine schedules computing operations concurrently, so it's not related to GPU memory.
I think the object pools will only be destructed at program exit, so I cannot imagine what memory problems will be caused during destructing. I have re-added the free operation several weeks ago, and no problems are found in my using process.
After fix this memory pool issue, some ASAN memory tests should be set up in CI to avoid memory leaks in C++ interface.

I see, thanks for background. I didn't look closely so just assumed it was about GPU memory.
Re: "I cannot imagine what memory problems will be caused during destruction".
I'm not an expert, but I think that in general destruction order is undefined for global variables and it can cause memory related problems if the memory an object needs during destruction has been freed before its destructor runs. Because the order of destruction is undefined things often seem to run fine until you get unlucky and the order changes.
See the issue I mentioned earlier, or this one: https://github.com/apache/incubator-mxnet/issues/12613
No idea if it applies here or not though.

Thanks for mentioning related issues, they are all singleton destructing problems. Crash happens when accessing too early destructed singletons. The main problem of object pools is fixed in #312, maybe there are still some underlying issues.
I think the correct way is to just let problem happens, then we can fix them to approach leak-free codes.

Thanks for the great discussion! @JohnLee168 and @coolwebgo are you guys still seeing memory leak ? Can you provide a reproducible script for this.

@chenyujing1234 Close this issue for inactivity. Please feel free to reopen if problem persist


Avoid warning when suppressing bokeh legend

The API for legends changed slightly resulting in warnings for the latest versions of bokeh. This ensures that all 0.12.x versions are handled correctly.

Looks fine.
Shame to have more version specific bokeh code (small though it is) but we will be able to get rid of all that one day!
Ready to merge?

Yep, ready to merge. We've generally been dropping support for the previous major version so not much of this ever accumulates and hopefully this will go away altogether once bokeh 1.0 is out.


Array Initialization

How about an easier way to initialize an array without specifying each element separately? Currently we have to use the following code:

It would be awesome if we could use something like this instead:

We currently have no plans to implement it but it's a good suggestion to add to our long-term backlog.


Package properties rpc endpoint

This PR implements the package properties endpoint

First merge update/compat PR and rebase onto integration after it is merged

Closed in favor of #462


csv files

Hi @gemyxzhang
I've been working with paltas and recently found your great work with subhalos.
Using make_images.py requires val_galaxies.csv and bad_galaxies.csv.
I want to reproduce your experiments. Could you provide an example for these csv files?
Thank you

These are provided by paltas and should be in your local install of the package. Please see https://github.com/swagnercarena/paltas/tree/main/paltas/Sources.


Add links to the TypeScript playground

The TS playground will get the types for react if you include the import React from "react" and set the right compiler flags
an example
A lot of large examples could have a corresponding playground link then.

Hey orta, will do

I'd like to take this one on!

all yours!

Started this today. Should have a PR open tonight or this weekend. One question for @orta
I'm getting an error in the playground for Promise.finally.
Things I've tried:

Setting the target to ES2018

My guess is that I need the lib to include es2018 in the config options? But I don't see that available. Any ideas?

great job joe!


Best practice for catching ETH link status event

Hi ESP-IDF,
I do love my ESP32 projects. And they literally let me - a mac user + Arduino Fan-boy start to understanding how microprocessors magically do jobs for my digital lifes everyday! 💘
Right now I'm working on a IO-controller project. It read the GPIO changes and send this change as a event through Ethernet Interface to other devices.
Since the Software Stack for ETH need sometime to start, and at last get a event to indicate that it is ready for sending data. How should I catch them in my code? I do can change the source code in esp-idf's components folder. But I do believe it is only the hacky way. But what is the right way?
The following lines are the trace about my Ethernet Interface. I think the last line indicate the init of this interface is finished.
I (4107) emac: emac start !!!

I (4117) emac: emac resetting ....
I (4117) emac: emac reset done
I (4127) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE
I (4147) emac: emac start success !!!
I (8147) eth_example: ETHIP:<IP_ADDRESS>
I (8147) emac: eth link_up!!!
I (8157) event: eth ip: <IP_ADDRESS>, mask: <IP_ADDRESS>, gw: <IP_ADDRESS>

https://github.com/espressif/esp-idf/blob/master/components/esp32/include/esp_event.h#L53
Use forum for how-to questions

Hi @negativekelvin , Super cool. Now I know from where I can getting started with. Now I'd close this "issue" first. If I still have some questions around this topic. I will discuss them in esp32.com 👍


Fixed the syntax error.

Fixed a syntax error in Demo.

Thanks again @praveenscience. Feel free to add your name to the contributers in the Readme file :1st_place_medal:

Done. Just added @saiij


[Add]: LeetCode Problems 3100 - 3199

@Ajay-Dhangar can i work on this?

@Ajay-Dhangar can you assign me this

@Ajay-Dhangar can you assign me this

already assigned so, wait or work on other


Feature Request: Add stronger encryption mechanism for SSL/TLS private keys

Currently AS3 only supports base64 encoding obfuscation for private keys which is not sufficient for declarations stored in public and private code repositories.

Alternative workflows:

inject/obtain the key throughout the orchestrator.

Manage keys/certs oob with other tooling and reference them from the declaration.

AT-460 is open internally for review.

Note that you may put passphrase-encrypted private keys in AS3 declarations, though to utilize them you must supply the corresponding passphrases.
The first time you submit a new secret value (a passphrase, a non-encrypted private key, etc.) in an AS3 declaration you must encode it in Base-64 (which as @btully pointed out is not encryption).  However, AS3 immediately encrypts each such secret using the target BIG-IP's SecureVault mechanism.  If you look at any declaration that AS3 returns to you (say, after POST or upon GET) you will see that your secrets have been transformed into encrypted values (look at their protected and ciphertext properties).  You can save encrypted secrets and submit them in future AS3 declarations.  Each such secret can only be decrypted by the BIG-IP which encrypted it or another BIG-IP in the same BIG-IP Device Group (cluster).
So until AS3 adds a more general mechanism, simply submit each of your secrets in a declaration, capture the encrypted form of that secret returned by AS3, and store that encrypted form in your orchestration-system/repo/whatever for use in all subsequent declarations targeting the same BIG-IP and/or its BIG-IP Device Group peers.

@btully , can you confirm the workflow above will satisfy the requirement?


request.files access became slower

The access to request.files['file'] became slower when I upgraded to Werkzeug 2.3. A 12.1 MB file used to take a couple of ms, but now it takes about 8 seconds.
from werkzeug import Request, Response, run_simple

@Request.application
def app(request):
    if request.method == "POST":
        return Response(request.files["file"].filename)

    return Response("""<!doctype html>
<meta charset=utf-8>
<form method=post enctype=multipart/form-data>
<input type=file name=file>
<input type=submit>
</form>
""", mimetype="text/html")

run_simple("<IP_ADDRESS>", 5000, app)

Environment:

Python version: 3.10
Werkzeug version: 2.3.0

Seems like the issue is related to the 2.3.0 version of Werkzeug. If I am downgrading both Flask and Werkzeug to 2.2.3 everything works as before.
Seems like only downgrading Flask to 2.2.3 still pulls the 2.3.0 version of Werkzeug. I only had Flask in my requirements.txt file, marked as Flask==2.2.3, but still ended up with this issue. This is most likely related to pip, but I was expecting the downstream dependencies of Flask's versions to remain the same.

I only had Flask in my requirements.txt

When writing an application, you must use a tool like pip-tools to pin your application's full dependency tree. This gives you reproducible deployments, allowing you to control when you get updates.

Yep, looks like the #2639 introduced a slowdown. Testing on 082e0e5b9c01fa3178ac0153413f082616f10914 is noticeably slower than the commit before it, 6425dbfd0d33a9ed198391838438a0659cfb3368.


Feature request: Standardize order of parameters when using CL_ABAP_UNIT_ASSERT

Hi Jörg-Michael, I've got another feature request for you: I'd like to be able to set a standardized order of parameters when using CL_ABAP_UNIT_ASSERT, especially when using method ASSERT_EQUALS.
Bad example:
    cl_abap_unit_assert=>assert_equals( act = lines( lt_table )
                                        exp = 1 ).

    cl_abap_unit_assert=>assert_equals( exp = 'S'
                                        act = lt_table[ 1 ]-type ).

I believe it can be confusing if the order of act and exp changes from call to call. In code reviews I noticed that this caused some accidental mix-ups.
What do you think?

Hi ConjuringCoffee,
thanks again, really like this idea! The new cleanup rule "Standardize assertion parameter order" is now available with version 1.11.0, which was just released!
I identified three "groups" of methods, for which you can configure the order of parameters separately:

In each case, you have (with slightly different parameter names):

I aligned with clean code experts that "expectation first" is the best default in all three cases, despite method signatures currently having "act" before "exp" for the first group.
Everything else (esp. one-liners and the position of closing parenthesis) is kept as is by this rule. The result looks like this:

As you can see from the last option, the rule can also be applied to an (application-specific) assert class CX_…_ASSERT for product code with signatures similar to CL_ABAP_UNIT_ASSERT (cp. rule "Use assert class instead of ASSERT").
Kind regards,
Jörg-Michael


Add "Workspace" to Profile and Name at the workspace level for clarity

Problem
The use of "Profile" at both the personal account level and at the workspace level. i was configuring the workspace settings, and seeing Profile > Name under the workspace almost prompted me to update that field with my own name (vs. the workspace name).

Solution
Add "Workspace" in front of all those. So:

Workspace profile (LHN)
Workspace profile (Page title)
Workspace name (name field)

Super basic label updates in the first screenshot:

Second screenshot has the same label updates but also includes an icon and illustration update to tie into the visual language we typically use for workspaces:

Slack thread for additional context - https://expensify.slack.com/archives/C07NZ8B1VTQ/p1732116570767239

Since the building illustration in the page header is a new one, here's the exported SVG:
simple-illustration__building.svg.zip

Proposal
Please re-state the problem that we are trying to solve in this issue.
Add "Workspace" to Profile and Name at the workspace level for clarity
What is the root cause of that problem?
Improvement
What changes do you think we should make in order to solve the problem?

update copies by adding workspace both here
https://github.com/Expensify/App/blob/64829131fe962681626b4b016140521d05f7fe52/src/languages/en.ts#L2474
https://github.com/Expensify/App/blob/64829131fe962681626b4b016140521d05f7fe52/src/languages/en.ts#L4116
What specific scenarios should we cover in automated tests to prevent reintroducing this issue in the future?
What alternative solutions did you explore? (Optional)

Proposal
Please re-state the problem that we are trying to solve in this issue.
Add "Workspace" to Profile and Name at the workspace level for clarity
What is the root cause of that problem?
Improvement
What changes do you think we should make in order to solve the problem?

update copy for both translations here by prepending workspace here
https://github.com/Expensify/App/blob/64829131fe962681626b4b016140521d05f7fe52/src/languages/en.ts#L2474
but here we should create a new copy because we use nameInputLabel in other places so we can create a new copy of workspaceName as
https://github.com/Expensify/App/blob/64829131fe962681626b4b016140521d05f7fe52/src/languages/en.ts#L4116
Update the illustration here
https://github.com/Expensify/App/blob/473822dd22944b9d16053376aadd627d882954e5/src/pages/workspace/WorkspaceProfilePage.tsx#L157
What specific scenarios should we cover in automated tests to prevent reintroducing this issue in the future?
What alternative solutions did you explore? (Optional)

Not overdue Melv. We're just getting started here.

updated the K2 to Weekly as this is more of a polish item.

Yeah I don't see why not!

Not sure if the bounty should be lower for this though. It seems like a pretty small change to me, but I'm not an engineer so maybe others can weigh in on that?

@Krishna2323 's proposal looks good to me!
🎀👀🎀 C+ reviewed


Portainer behind Nginx Proxy Manager with access list doesn't work

Hi everyone
I use portainer CE behind a npm.
It works like a charme if I let it in public access (what I don't want).
When I add an access list, I have a npm auth prompt (access list), I put my credentials, Then comes the portainer login, I put my portainer's creds and the I have another nginx-like prompt but none of previous creds works.
I use this acess list for others web services and it works fine so I think it comes frome my portainer setup but I don't know why.
Does anybody had this issue?

@skollrc
I've not come across this before, can you share your npm config for portainer?

here it is:

What about the access list and npm auth side of the config please?

Ok so it will not work with NPM... Well, I'll use a VPN instead
Thanks for this explanation !


Twu glue

This PR closes issue: [DM-1160]
Includes tests? [N]
Updated docs? [N]
Proposed changes:

Conditionally renders start proposal action button and alerts on the view opportunity page depending on vendor's TWU qualification status
Backend validation to prevent unqualified vendors from submitting proposals on the create proposal page

Additional notes:

Might want to think about how we handle proponents that participate in a competition but have their qualification status in a service area removed for some reason; not a concern for MVP
We are rendering the create proposal page for unqualified vendors for both SWU and TWU; we're performing validation to prevent them from submitting but might be worth considering the UX of this after MVP

Responses to the "additional notes":

Might want to think about how we handle proponents that participate in a competition but have their qualification status in a service area removed for some reason; not a concern for MVP

We had the same concern for SWU during initial implementation. The guidance from leadership/legal was that qualification status at the time of submission is what matters.

We are rendering the create proposal page for unqualified vendors for both SWU and TWU; we're performing validation to prevent them from submitting but might be worth considering the UX of this after MVP

Good point. It might be worth replacing the route here with the "notFound" page if the vendor is not qualified.


Golang: caddy dependency management

Hey,
I know there are at least 5 different go package management solutions outside.
Maybe it would be possible to try https://github.com/golang/dep. It's fast
changing but it claims to be ready for production use. I am not sure if you already
thought about it. Currently the caddy CI is broken because of the quic-go package.
Best Regards, Philipp

Caddy has all dependencies checked in since https://github.com/mholt/caddy/pull/1651.

yep but no replacement for package management in my opinion.

Thanks for the question. The vendor folder works well enough, and we use gvt to manage it. The CI tests on Windows are failing I think because go get -t ./... does not honor the vendor folder. (We don't vendor test dependencies anyway.) In Go 1.9, ./... will respect the vendor folder and I don't think it'll be a problem.

Hello Matt,
I think we should switch to dep in the near future, as it will be part of the Go toolchain :smile:


Not Working

This extension is not working on remote wsl inside of a vue file.

Yes it is not working...


chapter drawer themed textcolor

@rajarsheechatterjee
First of all I really like your redesign, however you forgot to theme the text color, so it was barely readable in darkmode

Yeah, hadn't worked on the app in a while so forgot about it.


Add list of supported commands

Pop up modal window with list of supported commands

Hello @kuychaco! 👋 I was just looking to open an issue requesting this, but I saw this already exists. I would ❤ to know if there was a list of supported commands, whether it's a popup, or a document as a part of this repository.

Fixed by #86.
Thanks @IanLee1521! 💥
Typing help in the command box will display the following:

Thank you @kuychaco & @IanLee1521! 🎉


Markdown ~ characters cannot be escaped by \ character

Issue Type: Bug
Hello,
I'm writing a document in Markdown but when I try to use two ~, it puts a central lines over the characters until it reaches the second ~. I tried to use \ for escaping them but does not work. An example in a .md file could be:
LinkedIn has ~N daily users, which means ~X logins
The result is:

If I try to escape by \ I get:

Please, could you add the escape by \ character also on tilde char?
Thank you in advance.


Bring back sbt-header

sbt-header was removed in https://github.com/sbt/zinc/pull/323

This is a ticket for the Scala Center spree at Scala Wave (Gdansk, Poland).
To solve this issue, sbt-header has to be cross-built to sbt 1.0.0-M6. To get an example of how to cross-build sbt header, you have to:

Update the sbt build to 0.13.16-M1.
Create a scala file in project called CrossBuildingPlugin.scala, getting the contents from here.
Fixing the scala version for the sbt version.

A good example is the following commit, which shows some of these steps. Note that the commit fixes some other stuff. The diff you'll get will be smaller.
Another example of a plugin that cross-builds to sbt 0.13 and 1.0 is sbt-structure.
This is a good ticket to improve your sbt skills, especifically if you want to port OSS projects or your company's projects to the latest, faster sbt 1.0.0.

@jvican, the link to CrossBuildingPlugin points to this same page.


test: add apis testing from postman in cypress

Issue
https://github.com/gravitee-io/issues/issues/6141
Description
Configure, create a Gravitee abstraction to facilitate test writing and migrate some collections from postman (apis publishing, apis visibility, apis rating and api quality)
Migrate the work made by @gaetanmaisse on https://github.com/gravitee-io/gravitee-api-management/tree/test/login-ui-test
Next steps

Continue to migrate steps from postman
During the migration and the code base growth, it seems that using the Cypress.Commands is not the best choice. Indeed, they are map by name, so writing a new create command would create conflicts and cause hard to find bug in the testing process. -> the idea is maybe to use another way of writing test

Gravitee.io Automatic Deployment
📚 View the storybook of this branch here

Gravitee.io Automatic Deployment
Congrats, all the CI steps were 🟢 . The Bot was able to deploy the build of this PR, so you can now try it directly here! 🚀
Notes: The deployed app is linked to the management API of the Element Zero team's environment.

Gravitee.io Automatic Deployment
📚 View the storybook of this branch here

Gravitee.io Automatic Deployment
Congrats, all the CI steps were 🟢 . The Bot was able to deploy the build of this PR, so you can now try it directly here! 🚀
Notes: The deployed app is linked to the management API of the Element Zero team's environment.

Gravitee.io Automatic Deployment
📚 View the storybook of this branch here

Gravitee.io Automatic Deployment
Congrats, all the CI steps were 🟢 . The Bot was able to deploy the build of this PR, so you can now try it directly here! 🚀
Notes: The deployed app is linked to the management API of the Element Zero team's environment.

Gravitee.io Automatic Deployment
📚 View the storybook of this branch here

Gravitee.io Automatic Deployment
Congrats, all the CI steps were 🟢 . The Bot was able to deploy the build of this PR, so you can now try it directly here! 🚀
Notes: The deployed app is linked to the management API of the Element Zero team's environment.


fat32: fix FAT and clusters offsets

now compatible with Windows

bugs probably introduced during refactor after CR. didn't notice because the file systems were still internally consistent with this module, but not with the Windows driver.


Latest Version Crashes

App version : 1.57.1
Device model: iPhone 7
iOS version: 15.7.9
Steps to reproduce the bug:
Install new version
Go through guided tour
Close, reopen and try to open a web page
Expected behavior:
Open the page
Actual behavior:
Nothing happens, then it just closes

Looks like there is a fix for it already.


Multiple Action not working

I added 3 actions but when i tapped any one button so it is always return last one added button

Could you show me some code. How do you add the actions?


added contributing file

issue : #21
@khannakshat7

@khannakshat7  @CodesbyUnnati  can you guys review this pr?

@CodesbyUnnati please add the labels  that are attached to the issue to the pr too else they are not getting counted

@Sloth-Panda  Great contribution buddy!!
Don't forget to star⭐ the repo and follow me on GitHub


Create nordnet.py

Script for logging into Nordnet using MitID. Nordnet will be closing their username/password login soon.

Awesome, thanks for adding this!


[Infra] Refactor the blurred overlay view #trivial

Converts the view that was being done manually into something that can be used in many places if needed. Already covered by tests in LiveAuctionVCTests - so no changes means everything is OK.

CI failing because it was submitted before https://github.com/artsy/eigen/pull/1621 was merged, merging.


fix: private field access

Problem
Compilation fails with RUSTFLAGS="--cfg docsrs"
error[E0616]: field `0` of struct `std::time::SystemTime` is private
  --> src/web.rs:40:36
   |
40 |         StdSystemTime::UNIX_EPOCH + self.0
   |                                          ^ private field

For more information about this error, try `rustc --explain E0616`.

Fix
Replace self.0 with self.duration_since(UNIX_EPOCH)

Compilation fails with RUSTFLAGS="--cfg docsrs"

You are only supposed to use this flag with cargo doc, not with cargo build.
How exactly did you trigger this error?

Replace self.0 with self.duration_since(UNIX_EPOCH)

self.0 is explicitly used here to avoid the calculation that would be done by self.duration_since(UNIX_EPOCH). This whole module is only active when compiling to Web where we do have access to this field.

This error was triggered when generating the docs for rust-libp2p. See here

I believe that the problem is RUSTFLAGS=--cfg=docsrs. Removing this should fix it and allow docs to be built correctly.
Let me know if this fixes your problem.

I documented this behavior https://github.com/daxpedda/web-time/commit/8094078ed4f3f737c3047e09d24bb786408bc326.

Indeed it works, thanks!


Typo Azure Blog Storage

Typo:
In Registering single Azure data source section, it typed Azure Blog Storage. I believe it should be written as Azure Blob Storage.

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

ID: 1986c2ac-c4bb-d66d-1482-9eb7566d956d
Version Independent ID: 3de05df6-27f9-446f-f288-460c5c6faf5c
Content: Troubleshoot your connections in Microsoft Purview - Microsoft Purview
Content Source: articles/purview/troubleshoot-connections.md
Service: purview
Sub-service: purview-data-map
GitHub Login: @linda33wj
Microsoft Alias: jingwang

@ilhamfadhil14
Thanks for your feedback! We will investigate and update as appropriate.

@ilhamfadhil14
Thanks for reporting this! We have created a PR for this issue and the changes should go live soon.


finding changes made by a script

log entries with date "2017-01-24T15:53:54.908Z"  were made by a script, I'm sure we can find others, I suppose it's suspicious if changes in different records happen at the same milisecond

when an xquery script is run, the datetime is fixed at the time the script starts and does not change during the execution of the script regardless of how long the script runs or how many docs are touched

yes. An interesting exception (although I guess it's multiple calls of the same query?) is the sync script which has a log entry with a different timestamp for each imagegroup

The script, /db/modules/admin/imagegroups-updater.xql, is called once for each imagegroup that is synced so each imagegroup log entry will reflect a different time.

here are a few others:

2012-12-25T01:09:21.507000+00:00
2015-10-27T19:58:07.021000+00:00
2012-12-11T17:49:53.482000+00:00
2013-12-03T23:23:40.962000+00:00
2012-12-11T17:21:51.251000+00:00
2012-12-11T17:08:33.797000+00:00
2014-03-20T14:27:21.266000+00:00
2014-04-22T00:30:13.577000+00:00
2015-01-05T17:22:13.356000+00:00
2017-08-28T14:40:13.266000+00:00
2014-05-02T18:19:14.334000+00:00
2012-03-30T11:00:49.672000+00:00
2019-12-20T20:45:53.530000+00:00
2019-12-20T20:42:53.606000+00:00
2017-11-02T17:38:24.575000+00:00
2014-07-29T20:49:23.894000+00:00
2014-07-29T16:18:50.168000+00:00
2017-06-26T14:21:21.664000+00:00
2017-06-26T14:20:59.643000+00:00
2013-04-19T11:24:55.882000+00:00
2014-10-15T17:56:23.536000+00:00
2014-04-23T19:16:52.743000+00:00
2017-07-07T21:31:19.810000+00:00
2014-03-07T15:45:20.935000+00:00
2015-05-07T18:09:14.220000+00:00
2016-12-05T22:09:43.772000+00:00
2014-04-23T19:13:59.680000+00:00
2014-05-02T17:27:14.339000+00:00
2016-05-10T16:55:52.884000+00:00
2013-04-19T11:24:25.492000+00:00
2018-05-31T19:53:40.968000+00:00
2017-11-02T17:17:10.070000+00:00


pass an array of strings for a Set field

It seems like transformWriteSet will always throw OneTableError error if there will be array of strings for a field with type=Set.
This line is checking for type == 'set', but transformWriteSet doesn't cover such case.
Example:
schema:
...


if no pcie gpus, then check glxinfo

allows devices such as nvidia jetsons to report their gpu name
also fix the double NVIDIA reporting when gpu_brand is on
Description
allows devices such as nvidia jetsons to report their gpu name.
also fix the double NVIDIA reporting when gpu_brand is on.
Features
Show more GPUs in the neofetch output

oh oops didn't realize I PRd a fork


MGMT-1444 Move ignition generation outside of install cluster async p…

…art db transaction
Change install cluster asyn part to handle errors with defer
Add requeset ID to install cluster async part context
This will reduce the transaction time to minimum.

subsystem passed:
Ran 39 of 39 Specs in 492.031 seconds
SUCCESS! -- 39 Passed | 0 Failed | 0 Pending | 0 Skipped
--- PASS: TestSubsystem (492.03s)
PASS
ok  	github.com/filanov/bm-inventory/subsystem	492.171s


Feature/timestamp server

Hi,
I made this change to indicate to the library (via an optional parameter) to mark the request with the timestamp returned by the service https://docs.gdax.com/#time, use:
`//create an authenticator with your apiKey, signature and passphrase
var authenticator = new Authenticator("", "", "");
//create the GDAX client
var gdaxClient = new GDAXClient.GDAXClient(authenticator, useServerTime:true);
//use one of the services
var allAccounts = await gdaxClient.AccountsService.GetAllAccountsAsync();`
with this version I do not have the error: "request timestamp expired"

I have experienced this issue in the past on a few occasions. For whatever reason my local system clock was running slow and was not being updated. In my opinion, for applications that use this DLL in their own client facing products this would be a nice feature to have. Otherwise client applications which have out of sync system clocks will experience errors.

Hello @alexhiggins732,
I had created this PR because the clock on my pc was not synchronized and so I changed the logic so that before each call the server time is passed.
I later suspended and in the meantime I solved this way:

I created a powershell script that manually syncs the PC clock via the internet
I created a windows task that runs every 5 minutes
In this way, using the library on the master branch, I have no more errors


Log the output for a trace command

Description
Not getting the output logs of a trace command
Impact
Not getting the output of a trace command brings in the problem of not knowing what actually went wrong if a command fails
Environment and steps to reproduce

Set-up:

Latest minikube version with --driver=docker
installing inspektor-gadget on minikube by building the source from https://github.com/kinvolk/inspektor-gadget

Task:
kubectl annotate -n gadget trace/biolatency gadget.kinvolk.io/operation=start
kubectl annotate -n gadget trace/biolatency gadget.kinvolk.io/operation=stop
kubectl get -n gadget trace biolatency -o jsonpath='{.status.output}'
Error:
Failed to send SIGINT to process: os: process already finished
The other issue is there are times when I try to annotate with a stop value but the status turns out to be saying Started

Expected behavior
Annotating biolatency trace with start and stop values should result in correct values

closing this as it has already landed in main


Remove inspect limit for Dialyzer warnings

Hi there 👋
This PR removes the inspect limit when using mix dialyzer with MIX_DEBUG=1.
This makes the inspecting the raw dialyzer warnings consistant with displaying the human-readable warnings, where, however high the number of warnings, they will always all be printed.
Best 🤗

Hey! Any feedback on this?

Bumped to 1.1.2! https://hex.pm/packages/dialyzex/1.1.2


Uploading SOC with the same owner and identifier should be rejected

Summary
I uploaded two single owner chunks on the same node to the /soc endpoint with the same owner and identifier and it was successful.  As per Book of Swarm (pg. 115 footnote 3):

If the chunks are uploaded using the same route, the chunk that comes later will be rejected as already known.

Steps to reproduce
% echo '010000000000000000' | xxd -r -p | curl --data-binary @- --no-buffer 'http://localhost:61633/soc/8d3766440f0d7b949a5e32995d09619a7f86e632/0000000000000000000000000000000000000000000000000000000000000000?sig=6c7ea367cce127578597309f90f5c8996ae01e0e288a25ca5fdd82bcfb999e8f31ac14a64cfc28c4984160ed160f5fa3156ec3c38afc0b413e60cb62daf362171c'
{"reference":"9d453ebb73b2fedaaf44ceddcf7a0aa37f3e3d6453fea5841c31f0ea6d61dc85"}

% echo '010000000000000001' | xxd -r -p | curl --data-binary @- --no-buffer 'http://localhost:61633/soc/8d3766440f0d7b949a5e32995d09619a7f86e632/0000000000000000000000000000000000000000000000000000000000000000?sig=94b5a602b9621bc2ab4e703d7c4e219d2754a7e06f6dbea4b1de528a8c43a1ed443bea80abc54506a7b06408714c92e1f8d8eecde556bfd414d34cc49fa032501c'
{"reference":"9d453ebb73b2fedaaf44ceddcf7a0aa37f3e3d6453fea5841c31f0ea6d61dc85"}

Expected behavior
The second command should not succeed but instead should be rejected.

@agazso, could you please do some basic QA on this task and report your outcome here? Question: does bee behave now as expected? Is the returned error useful?

@agazso, could you please do some basic QA on this task and report your outcome here? Question: does bee behave now as expected? Is the returned error useful?

Yes, this is fixed in 0.5.1 and 409 (Conflict) is returned.


Azure functions dependency injection - error when referencing class library

I have a Azure Functions project that has a reference to a class library (netstandard 2.0).
The class library contains a reference to Microsoft.Extensions.DependencyInjection.Abstractions.
The class library has the following extension method:
using JOS.MyApp.Core;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;

namespace JOS.MyApp.Application
{
    public static class ApplicationConfigurator
    {
        public static void AddApplication(this IServiceCollection services)
        {
              // Do stuff
        }
    }
}

My functions startup looks like this:
Startup.cs
using JOS.MyApp.Functions;
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;

[assembly: FunctionsStartup(typeof(Startup))]
namespace JOS.MyApp.Functions
{
    public class Startup : FunctionsStartup
    {
        public override void Configure(IFunctionsHostBuilder builder)
        {
              // It does not matter if this call is here or not, it crashes because of the reference to the class library anyway.
               builder.Services.AddApplication();
        }
    }
}

When the Azure Functions project references the class library, the following error occurs:
Azure Functions Core Tools (2.7.1158 Commit hash: f2d2a2816e038165826c7409c6d10c0527e8955b)
Function Runtime Version: 2.0.12438.0
SKipping 'FUNCTIONS_CORETOOLS_ENVIRONMENT' because value is null
[2019-05-14 20:10:32] Starting Rpc Initialization Service.
[2019-05-14 20:10:32] Initializing RpcServer
[2019-05-14 20:10:32] Building host: startup suppressed:False, configuration suppressed: False
[2019-05-14 20:10:32] A host error has occurred
[2019-05-14 20:10:32] JOS.MyApp.Functions: Method not found: 'Microsoft.Extensions.DependencyInjection.IServiceCollection Microsoft.Azure.Functions.Extensions.DependencyInjection.IFunctionsHostBuilder.get_Services()'.
Value cannot be null.
Parameter name: provider

If I remove the reference to the class library, the function app starts as expected.
So the problem appears to be that im using the Microsoft.Extensions.DependencyInjection.Abstractions package in my class library.
To Reproduce
Steps to reproduce the behavior:

Create a new functions app
Create a new class library
Setup DI for your functions app as described here: https://docs.microsoft.com/en-us/azure/azure-functions/functions-dotnet-dependency-injection
Add the same extension method as above to the class library
Add a reference to the class library from the Azure Functions project
Try to run the functions project

Expected behavior
The functions project starts without any issues.
Additional context
Host (useful for support):
  Version: 3.0.0-preview5-27626-15
  Commit:  61f30f5a23

.NET Core SDKs installed:
  2.1.602 [C:\Program Files\dotnet\sdk]
  2.1.700-preview-009597 [C:\Program Files\dotnet\sdk]
  2.1.700-preview-009601 [C:\Program Files\dotnet\sdk]
  2.1.700-preview-009618 [C:\Program Files\dotnet\sdk]
  2.2.202 [C:\Program Files\dotnet\sdk]
  2.2.203 [C:\Program Files\dotnet\sdk]
  2.2.300-preview-010046 [C:\Program Files\dotnet\sdk]
  2.2.300-preview-010050 [C:\Program Files\dotnet\sdk]
  2.2.300-preview-010067 [C:\Program Files\dotnet\sdk]
  3.0.100-preview5-011568 [C:\Program Files\dotnet\sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.1.9 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.9 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.0.0-preview5-19227-01 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.1.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.3 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.4 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.0.0-preview5-27626-15 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.WindowsDesktop.App 3.0.0-preview5-27626-15 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

I created a repro here: https://github.com/joseftw/azure-functions-di-bug

Just a guess, can you mix your class library Microsoft.Extensions.DependencyInjection.Abstractions 3.0.0-preview5.19227.9 with Azure Function netcoreapp2.1?

I remember that I had a similar problem, when referencing Microsoft.Extensions.DependencyInjection.Abstractions Nuget package directly. I resolved this by referencing only the Microsoft.Azure.Functions.Extensions package, and that package references the Microsoft.Extensions.DependencyInjection.Abstractions package too.
I tried with your repro you posted, and I got the same error your describe, but resolved it by removing the direct reference to Microsoft.Extensions.DependencyInjection.Abstractions from the ClassLibrary1 project, and added a reference to Microsoft.Azure.Functions.Extensions to that same class library.

Thanks @MikaBerglund.
I tried that yesterday as well and got it working, but unfortunately that's not a viable solution for me since my class library is used by multiple applications which are not Azure Functions, so I don't want it to have any Azure Functions specific references.
To me it feels like a bug, the Microsoft.Extensions.DependencyInjection.Abstractions package was created specifically for this scenario, to have one common abstraction.
What do you think? :)

Sure it feels like a bug, or at least an unwanted feature. At the end of the day, the Microsoft.Azure.Functions.Extensions package references exactly the same version of the Microsoft.Extensions.DependencyInjection.Abstractions as you had in your class library, so there should not even be any version conflicts.

At the end of the day, the Microsoft.Azure.Functions.Extensions package references exactly the same version of the Microsoft.Extensions.DependencyInjection.Abstractions as you had in your class library

Is that true? Looking at the sample, the class library references 3.0.0-preview5.19227.9 of Microsoft.Extensions.DependencyInjection.Abstractions but the Microsoft.Azure.Functions.Extensions package references 2.2.0 of that package.
This kind of MethodNotFoundException is exactly the kind of error I'd expect when mixing major/minor versions. Your class library is built against a newer version than is actually available on the Azure Functions runtime, so you are getting runtime errors. You can't cross the streams between 2.2 and 3.0.

Transferring to DI repo and area.


Automated cherry pick of #2564: aws disk resize bugfix

Cherry pick of #2564 on release/2.12.
#2564: aws disk resize bugfix

Codecov Report

:exclamation: No coverage uploaded for pull request base (release/2.12@99f293e). Click here to learn what that means.
The diff coverage is 0%.

@@              Coverage Diff               @@
##             release/2.12   #2567   +/-   ##
==============================================
  Coverage                ?   7.17%
==============================================
  Files                   ?     458
  Lines                   ?   72395
  Branches                ?       0
==============================================
  Hits                    ?    5194
  Misses                  ?   66771
  Partials                ?     430

Flag
Coverage Δ

#aFlag
7.17% <0%> (?)

Impacted Files
Coverage Δ

pkg/multicloud/aws/disk.go
0% <0%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 99f293e...981f96a. Read the comment docs.

/lgtm

/approve


Significant number of associations lost in main

It was reported that a lot of associations were lost in this run. For example, the page if RNAse3:

Production - 352 associations - https://platform.opentargets.org/target/ENSG00000169397/associations
Main - 335 associations - https://main--platform-app.netlify.app/target/ENSG00000169397/associations

More noticeable, the first associated disease Noonan syndrome went away.

After looking at this case in more detail this is an expected change. What's happening is that one of the synonyms of RNAse3 is RAF1, which is also an approvedSymbol for a different gene. In production, we were using all synonyms for mapping evidence to the Ensembl gene ID. However, we have changed that in 21.06 to only allow approvedSymbols. This more stringent way of mapping symbols will affect all datasources that provide gene symbols instead of Uniprots or Ensembl Gene IDs.
Not sure whether this explains the full extent of missing associations.

Related to #1598


publish to PyPI

Done: https://pypi.python.org/pypi?name=pypki2&version=0.7.1&:action=display
Used helpful instructions at http://peterdowns.com/posts/first-time-with-pypi.html


Get and Set Home / Away Modes?

I can see a previous issue asking about toggling notifications, which is not possible due to being a cloud feature. The Android app also has Home / Away modes where you can set different settings for one or more cameras and it applies them to each camera individually (there's even a progress pop-up counting up until all selected devices are updated).
I have to ask even though it is 99% sure a cloud feature as well, but is it possible to get and set this from Python instead of toggling notifications directly?
I just can't believe the Tapo app still doesn't have geofencing to automate this stuff... It's literally called Home / Away Mode but doesn't actually check if you're home or away, you have to manually open the app and tap a button...

Home and away modes just execute multiple actions you set up automatically. You can achieve the same and a lot more via home assistant and tapo integration. Or you can write your own script that would execute the same functions.


Error message during switchover

During the switchover an psql error message is shown on the STDOUT but the operation itself succeeds.
vmpg156rz43ha:/home/pg000131 [pg000131]$ pgoperate --standbymgr --switchover
Stopping master.
Getting master last checkpoint location and next XID.
waiting for server to promote.... done
server promoted
Replication slot slot_vmpg025rz44ha created on vmpg156rz43ha.
psql: error: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.49157"?
Starting cluster pg000131.
WAL receiver in streaming mode.
Reinstation complete.
Executing sync on master vmpg156rz43ha
vmpg156rz43ha:/home/pg000131 [pg000131]$

Fixed. Switchover works now as expected without any error message from psql.
pgoperate --standbymgr --switchover --target olt
Stopping master.
Getting master last checkpoint location and next XID.
waiting for server to promote.... done
server promoted
Replication slot slot_olt created on vmpg025rz44.
Replication slot slot_zhh created on vmpg025rz44.
Starting cluster pg000187.
WAL receiver in streaming mode.
Reinstation complete.
Executing sync on master olt (vmpg025rz44ha)


Add events to runtime

Add events to the shiro runtime to allow graphical user interfaces to register handlers and respond to changes in the model
Some events that might be useful:

port expression change
node update
graph update started
graph update progress
graph update complete

I will take a different approach for events and will tackle this later when I make Shiro realtime.


Ability to build a bicep file from VSCode file context menu

Is your feature request related to a problem? Please describe.
I have no quick way to build a bicep file into an ARM template without invoking a terminal command like az bicep build or bicep build myself.
Describe the solution you'd like
I'd like the ability to right click a bicep file in VSCode treeview and choose Build to produce an ARM template without going into a terminal window.

My guess is someone with VS code extension authoring should be able to implement this pretty quickly - that's why I am tagging it as a good first issue.
This also opens pandora's box for deploying bicep from a context menu :)

cc @marcusfelling who has expressed interest in this as well. There may already be an issue.

+1 related to https://github.com/Azure/bicep/issues/1862 https://github.com/Azure/bicep/issues/1182

I started on the implementation for build under #191 - it's old, but the code diff might be useful to whoever is looking to implement this.

Building/decompiling would be very easy to implement.  Deploy is more complicated, depending on what we do (e.g. integration with the Azure subscription extension and Azure pane so you can sign in?, or just a “run a command in the terminal” experience, which would be a lot simpler).
It would also be pretty easy to have a bicep->JSON preview window that could be opened to the right side (like the bicep playground, but local).  Would that be interesting?

It would also be pretty easy to have a bicep->JSON preview window that could be opened to the right side (like the bicep playground, but local). Would that be interesting?

Would that generate the JSON preview in a secondary window or would that build/show the build result in a preview window?
I prefer the later.

Not sure what you mean.  I was thinking it would show the result of building the bicep file (the built JSON) as you type.

Not sure what you mean. I was thinking it would show the result of building the bicep file (the built JSON) as you type.

I was thinking having to save the file, invoke the command on the saved file and see the generated result.
Not necessarily as you type.

Gotcha.


Serialize VM dialect to textual form (C/C++, etc)

Similar to #34 (lowering VM dialect to LLVM IR dialect), the idea here is to emit the VM IR as C/C++. This would allow us to - without needing to involve LLVM IR and deal with target compilation/linkage issues - ahead-of-time compile the scheduler side of the VM operations (or the reference VMLA backend). The benefit here is that when targeting weird environments (which either don't have or may have incomplete or practically binary-only LLVM distributions) we aren't doing anything fancy. This makes debugging easier (we can emit #line directives to get source mapping), profiling easier (as we can use normal platform tools like vtune without special hacks), and the whole process more seamless for initial bringup (gcc module.c should be close to the scope of the required configuration).
The design of the VM C API should make this fairly straightforward (and if not we should fix the API :). The emitted code would implement the iree_vm_module_t interface and then could be plugged into an iree_vm_context_t just as any other custom module or the interpreter bytecode_module is plugged in.
This means that when walking a vm.module with vm.funcs you could emit the module struct and C functions and then emit the lookup functions (like get_function/lookup_function). It'd look similar to what the bytecode_module does (as I did that before writing all the C++ goo that we should avoid because it only makes it easier to do handwritten stuff and adds additional dependencies).
Some example IR snippets exist in the compiler/Dialect/VM/**/tests/ paths, like:
https://github.com/google/iree/blob/master/iree/compiler/Dialect/VM/Transforms/test/global_initialization.mlir
As an example, an input like this:
vm.module @my_module {
  vm.func @sub_i32(%arg0 : i32, %arg1 : i32) -> i32 {
    %0 = vm.sub.i32 %arg0, %arg1 : i32
    vm.return %0 : i32
  }
}

may end up as something like:
typedef struct {
  iree_vm_module_t interface;
} my_module_t;

typedef struct {
  // global variable storage, iree_vm_function-t import table, etc
} my_module_state_t;

iree_status_t my_module_alloc_state(...) {
  // allocate my_module_state_t, initialize variables, etc
}

// vm.func @sub_i32(%arg0 : i32, %arg1 : i32) -> i32
iree_status_t my_module_sub_i32(int32_t arg0, int32_t arg1, int32_t* out_ret0) {
  // vm.sub.i32 %arg0, %arg1 : i32
  int32_t v0 = arg0 - arg1;
  // vm.return %0 : i32
  *out_ret0 = v0;
  return IREE_STATUS_OK;
}

iree_status_t my_module_lookup_function(...) {
  if (function_name == "sub_i32") return ...;
}

iree_status_t my_module_create(iree_allocator_t allocator, iree_vm_module_t** out_module) {
  // alloc iree_vm_module_t
  // set function pointers
  module->interface.alloc_state = my_module_alloc_state;
  module->interface.lookup_function = my_module_lookup_function;
  ...
}

Because we are lowering from SSA IR we can simply emit the registers as is. vm.ref types in the IR can use the iree_vm_ref_* methods to manage the refs, and branches can be implemented with gotos (as we can emit the proper ref management when needed). Things like globals can be implemented with named values in the state struct (so vm.global.i32 @g2 in the IR becomes i32_t g2; as a struct member, etc).
The intent was to mirror the VM stack (iree_vm_stack_t) such that it is valid during execution. This will let us get nice stack walking on errors, implement a debugger for modules that can inspect module state, etc. It's not strictly required, though, except for coming into/out of the execute calls. I've got a bit of cleanup to do there and can try to make it lighter for this use case (#1172).
Imports (calls to vm.import ops) can be resolved through iree_vm_function_t. If the imports are listed in the lookup_function method (like hal.allocator.allocate, which would be generated from the list of vm.import ops in the IR) the runtime will call resolve_import for each one and then the iree_vm_module_t::execute method on the target function can be used to call it (ala https://github.com/google/iree/blob/master/iree/vm/bytecode_dispatch.c#L735-L736).
We can use this to clean up the interface, reduce rough edges, add more tests, etc. The nice thing about this is that the same interface is used by the HAL module and any custom module added (tensor lists, etc), so improvements to docs/performance/etc help everything.
To enable this all we can add a new translation registration like -iree-mlir-to-vm-c-module or something here: https://github.com/google/iree/blob/master/iree/compiler/Translation/IREEVM.cpp#L107 - note that the only difference between going to a flatbuffer with bytecode or C (or LLVM IR/etc) would be the final translation call: https://github.com/google/iree/blob/master/iree/compiler/Translation/IREEVM.cpp#L93
The translation then lives under VM/Target/:
https://github.com/google/iree/tree/master/iree/compiler/Dialect/VM/Target

Let me know if this all sounds crazy or how it matches up with what you were thinking :) The intent is to make things faster/leaner/simpler vs. the flatbuffers+bytecode approach (still needed for dynamic module loading/deployment) and make our lives easier in testing/debugging/etc - if it starts to feel like that's not the case we can figure out if it's worth it.

I've looked into the bytecode module and put something together. Some pieces are missing / unclear to me though. If this goes in the right direction I'll update and cleanup PR #2842 to emit the corresponding code.
I think we should get something simple like the above example running end to end first so we can test this and add the missing ops afterwards.
typedef struct {
  iree_vm_module_t interface;
} MODULE_NAME_t;

typedef struct {
  // global variable storage, iree_vm_function-t import table, etc
} MODULE_NAME_state_t;

void MODULE_NAME_destroy(void *self) {
  MODULE_NAME_t *module = (MODULE_NAME_t *)self;

  return iree_allocator_free(module->allocator, module);
}

iree_string_view_t MODULE_NAME_name(void *self) {
  return iree_string_view_t{MODULE_NAME, strlen(MODULE_NAME)};
}

iree_vm_module_signature_t MODULE_NAME_signature(void *self) {
  //???
}

iree_status_t MODULE_NAME_get_function(
    void *self, iree_vm_function_linkage_t linkage, int32_t ordinal,
    iree_vm_function_t *out_function, iree_string_view_t *out_name,
    iree_vm_function_signature_t *out_signature) {
  //???
}

iree_status_t MODULE_NAME_lookup_function(void *self,
                                          iree_vm_function_linkage_t linkage,
                                          iree_string_view_t name,
                                          iree_vm_function_t *out_function) {
  if (!out_function) return IREE_STATUS_INVALID_ARGUMENT;
  memset(out_function, 0, sizeof(iree_vm_function_t));

  if (!name.data || !name.size) return IREE_STATUS_INVALID_ARGUMENT;

  MODULE_NAME_t *module = (MODULE_NAME_t *)self;

  if (!strcmp(name.data, "MODULE_NAME_FUNC_A")) {
    out_function->module = &module->interface;
    out_function->linkage = NULL;  //???
    out_function->ordinal = NULL;  //???
    return IREE_STATUS_OK;
  }
  // repeat for each function

  return IREE_STATUS_NOT_FOUND;
}

iree_status_t MODULE_NAME_alloc_state(
    void *self, iree_allocator_t allocator,
    iree_vm_module_state_t **out_module_state) {
  if (!out_module_state) return IREE_STATUS_INVALID_ARGUMENT;
  *out_module_state = NULL;

  MODULE_NAME_t *module = (MODULE_NAME_t *)self;

  MODULE_NAME_state_t *state = NULL;
  IREE_RETURN_IF_ERROR(iree_allocator_malloc(
      allocator, sizeof(MODULE_NAME_state_t), (void **)&state));
  state->allocator = allocator;

  //???

  *out_module_state = (iree_vm_module_state_t *)state;
  return IREE_STATUS_OK;
}

void MODULE_NAME_free_state(void *self, iree_vm_module_state_t *module_state) {
  if (!module_state) return;

  MODULE_NAME_state_t *state = (MODULE_NAME_state_t *)module_state;

  //???

  iree_allocator_free(state->allocator, module_state);
}

iree_status_t MODULE_NAME_resolve_import(void *self,
                                         iree_vm_module_state_t *module_state,
                                         int32_t ordinal,
                                         iree_vm_function_t function) {
  //???
}

iree_status_t MODULE_NAME_begin_call(void *self, iree_vm_stack_t *stack,
                                     const iree_vm_function_call_t *call,
                                     iree_vm_execution_result_t *out_result) {
  //???
}

iree_status_t MODULE_NAME_get_function_reflection_attr(
    void *self, iree_vm_function_linkage_t linkage, int32_t ordinal,
    int32_t index, iree_string_view_t *key, iree_string_view_t *value) {
  //???
}

iree_status_t MODULE_NAME_create(iree_allocator_t allocator,
                                 iree_vm_module_t **out_module) {
  if (!out_module) return IREE_STATUS_INVALID_ARGUMENT;
  *out_module = NULL;

  MODULE_NAME_t *module = NULL;
  IREE_RETURN_IF_ERROR(iree_allocator_malloc(allocator, sizeof(MODULE_NAME_t),
                                             (void **)&module));
  module->allocator = allocator;

  iree_vm_module_initialize(&module->interface, module);
  module->interface.destroy = MODULE_NAME_destroy;
  module->interface.name = MODULE_NAME_name;
  module->interface.signature = MODULE_NAME_signature;
  module->interface.get_function = MODULE_NAME_get_function;
  module->interface.lookup_function = MODULE_NAME_lookup_function;
  module->interface.alloc_state = MODULE_NAME_alloc_state;
  module->interface.free_state = MODULE_NAME_free_state;
  module->interface.resolve_import = MODULE_NAME_resolve_import;
  module->interface.begin_call = MODULE_NAME_begin_call;
  module->interface.get_function_reflection_attr =
      MODULE_NAME_get_function_reflection_attr;

  *out_module = &module->interface;
  return IREE_STATUS_OK;
}

Oo a timely question! I was just looking at something similar for revamping the native modules (like the HAL and custom modules) so that they shared more code. We may be able to share the same thing with this, too, which will keep things easier to modify and reduce total binary size.
My plan was to have an iree/vm/native_module.h+.c that had all of the general stuff for reflection and method dispatch and then generate an inline include file containing a few tables of information that were used per module. This is similar to how the current C++ wrapper in module_abi_cc.h is done (with the table here https://github.com/google/iree/blob/e734f9a8a4d7f17f23dd0d838f964f89a32f73b4/iree/vm/module_abi_cc.h#L240 and the rest of the code in that file using that table for information).
For purely native modules (custom/HAL/etc) they'd then just need to define the functions they export and put them in one or more tables. Here's a super rough sketch I did last night: https://gist.github.com/benvanik/2d7929373181e23511319aa0ed7b1ad9 - of note is that users provide the fn and then the fn_call shims are generated that marshal arguments into C arguments. Users can have any other additional C functions that use whatever convention they want internally but the exported ones are derived from the vm.import ops for example in https://github.com/google/iree/blob/9624bbbcaa1f491f067aad500d6679b538db3403/iree/compiler/Dialect/HAL/hal.imports.mlir#L28-L33.
What I'm thinking is that you could generate the same kind of thing here; if you emitted your C functions then all you'd need to do is also emit the dispatch table and some module metadata (like its name) and leave the rest like function lookup to the hand-written native_module code. I was thinking that the emitter for the tables would take in an IREE::VM::ModuleOp with the ImportOps and then emit the tables, so if you took your exported IREE::VM::FuncOps and turned them into ImportOps you'd be able to just pass those along. Then we have just one place taking the ops and producing the function signatures so they won't get out of sync.
If this sounds reasonable, I can get the first pass on this done today (PST) - or at least the header with the table types - and then we can iterate from there. Or, you can do what you have above and we could always reconcile it later - I don't want to block you, but this may help take care of a lot of goo for you that isn't core to what the actual emitc work is doing :)

Here's a rough sketch of the header:
typedef struct {
  iree_string_view_t key;
  iree_string_view_t value;
} iree_vm_reflection_attr_t;

// Describes an imported native function in a native module.
// All of this information is assumed read-only and will be referenced for the
// lifetime of any module created with the descriptor.
typedef struct {
  // Fully-qualified function name (for example, 'other_module.foo').
  iree_string_view_t full_name;
} iree_vm_native_import_descriptor_t;

// Describes an exported native function in a native module.
// All of this information is assumed read-only and will be referenced for the
// lifetime of any module created with the descriptor.
typedef struct {
  // Module-local function name (for example, 'foo' for function 'module.foo').
  iree_string_view_t local_name;

  // TODO(#1979): move register info to iree_vm_function_signature_t.
  // Total number of valid i32 registers used by the function.
  uint16_t i32_register_count;
  // Total number of valid ref registers used by the function.
  uint16_t ref_register_count;

  // An optional list of function-level reflection attributes.
  iree_host_size_t reflection_attr_count;
  const iree_vm_reflection_attr_t* reflection_attrs;
} iree_vm_native_export_descriptor_t;

// Describes an native module implementation by way of descriptor tables.
// All of this information is assumed read-only and will be referenced for the
// lifetime of any module created with the descriptor.
//
// The common native module code will use this descriptor to return metadata on
// query, lookup exported functions, and call module-provided implementation
// functions for state and call management.
typedef struct {
  // Name of the module prefixed on all exported functions.
  iree_string_view_t module_name;

  // All imported function descriptors.
  // interface.resolve_import will be called for each import.
  iree_host_size_t import_count;
  const iree_vm_native_import_descriptor_t* imports;

  // All exported function descriptors.
  iree_host_size_t export_count;
  const iree_vm_native_export_descriptor_t* exports;

  // An optional list of module-level reflection attributes.
  iree_host_size_t reflection_attr_count;
  const iree_vm_reflection_attr_t* reflection_attrs;
} iree_vm_native_module_descriptor_t;

// Creates a new native module with the metadata tables in |descriptor|.
// These tables will be used for reflection and function lookup, and the
// provided function pointers will be called when state needs to be managed or
// exported functions need to be called.
//
// An implementation |interface| providing functions for state management and
// function calls can be provided to override default implementations of
// functions. The structure will be copied.
//
// The provided |descriptor| will be referenced by the created module and must
// be kept live for the lifetime of the module.
IREE_API_EXPORT iree_status_t IREE_API_CALL iree_vm_native_module_create(
    const iree_vm_module_t* interface,
    const iree_vm_native_module_descriptor_t* module_descriptor,
    iree_allocator_t allocator, iree_vm_module_t** out_module);

So you could generate some readonly tables like:
static const iree_vm_native_import_descriptor_t my_module_imports_[] = {
  {iree_make_cstring_view("other.foo")},
  {iree_make_cstring_view("other.bar")},
};
static const iree_vm_reflection_attr_t fn_b_attrs_[] = {
  {iree_make_cstring_view("key"), iree_make_cstring_view("value")},
};
static const iree_vm_native_export_descriptor_t my_module_exports_[] = {
  {iree_make_cstring_view("fn_a"), 8, 12, 0, NULL},
  {iree_make_cstring_view("fn_b"), 8, 12, IREE_ARRAYSIZE(fn_b_attrs_), fn_b_attrs_},
};

static const iree_vm_native_module_descriptor_t my_module_descriptor_ = {
  iree_make_cstring_view("my_module"),
  IREE_ARRAYSIZE(my_module_imports_), my_module_imports_,
  IREE_ARRAYSIZE(my_module_exports_), my_module_exports_,
  0, NULL,
};

And provide them when you create your module:
iree_vm_module_t interface = {0};
interface.alloc_state = my_module_alloc_state;
interface.free_state = my_module_free_state;
interface.begin_call = my_module_begin_call;
iree_vm_native_module_create(&interface, my_module_descriptor_, ...);

Besides a lot of the common code (like a binary search on exported function names in function lookup, reflection attribute queries and error validation, etc) being shared, which is nice, the only thing your generated module  code has to do is have some compile-time generated tables and provide your state alloc, free, and function call implementations.

Here's a WIP PR: https://github.com/google/iree/pull/2866
native_module_test.h shows what some modules look like and is probably the most interesting. In this model you'd be emitting a .h/.c with:

the import/export/module descriptors
a custom module_t for caching types (like hal.buffer, etc)
a custom module_state_t with any module globals (if needed)
the function table itself pointing at your generated functions
a creation function that sets up the type table

The rest of the code for reflection/function lookups/etc are in native_module.c and shared. It's not a lot of code, but it is nice to have a consistent implementation and when 10-20+ modules are built into a binary not duplicating it all across all emit-c modules, custom user modules, etc.
The thing still missing in this PR is the stuff from https://gist.github.com/benvanik/2d7929373181e23511319aa0ed7b1ad9 for marshaling args nicely, which I'll get finished tomorrow. Exports are easy (demonstrated in module_b.entry as an i32->i32), but the imports (module_a.*) require some nicer macros.
Hopefully this is useful and gives us something to iterate on!

Thank you :)
I've adapted your test case to the VM module from PR #2842 and got it working. https://gist.github.com/simon-camp/cb63d7d434c586e6552e28fd5bd07317 is what I've come up with.
So add_module_test.h needs to be generated by the CModuleTarget, right?

Nice! That's the idea - then you'd just have an extern module_a_create (or whatever your module name is) and call that to create the module (vs iree_vm_bytecode_module_create or iree_hal_module_create). The nice thing about the way you have it separated there with add_mlir_generated.h and the add_module_test.h is that the goo setting up modules is isolated from the actual code that was translated, so as a user I could ignore the module setup and see that nice mapping from add.mlir -> add_mlir_generated.h.
Now I just need to hide all the boilerplate to marshal function args and it'll be even better :)
I didn't get to that today, but I think with what you have it shouldn't be blocking so I can land the native_module PR as-is if that helps!

Yeah landing your PR as-is would already be really useful. I'll then update my PR. I should be able to get something up soon.
Once this is done we can get to the more interesting stuff :)

Cool - I'll get that landed today!

The code generation is now hooked up in the build system so things are tested properly. The generated code looks like this
vm.module @add_module {
  vm.func @add_1(%arg0 : i32, %arg1 : i32) -> (i32, i32) {
    %0 = vm.add.i32 %arg0, %arg1 : i32
    %1 = vm.add.i32 %0, %0 : i32
    vm.return %0, %1 : i32, i32
  }
  vm.export @add_1
}

#include "iree/vm/context.h"
#include "iree/vm/instance.h"
#include "iree/vm/native_module.h"
#include "iree/vm/ref.h"
#include "iree/vm/stack.h"

#include "iree/compiler/Dialect/VM/Target/C/vm_c_funcs.h"

//=============================================================================
// module "add_module"
//=============================================================================

iree_status_t add_module_add_1_impl(int32_t v1, int32_t v2, int32_t *out0, int32_t *out1) {
int32_t v3 = vm_add_i32(v1, v2);
int32_t v4 = vm_add_i32(v3, v3);
*out0 = v3;
*out1 = v4;
return iree_ok_status();
}

//=============================================================================
// The code below setups functions and lookup tables to implement the vm
// interface
//=============================================================================
//=============================================================================
// module "add_module"
//=============================================================================

static const iree_vm_native_export_descriptor_t add_module_exports_[] = {
{iree_make_cstring_view("add_1"), 0, 0, 0, NULL},
};

static const iree_vm_native_import_descriptor_t add_module_imports_[] = {
};

static const iree_vm_native_module_descriptor_t add_module_descriptor_ = {
iree_make_cstring_view("add_module"),
IREE_ARRAYSIZE(add_module_imports_),
add_module_imports_,
IREE_ARRAYSIZE(add_module_exports_),
add_module_exports_,
0,
NULL,
};

The rest of the setup is written by hand for now. I'd like to set up one or two more tests to run the translation on. Supporting vm.call would allow us to test imports I guess. Not sure how the translation would look like though.

That's awesome @simon-camp!
For vm.call, you could handle only internal calls to start. These would be only to other functions within the same module so you don't have to worry about cross-module calling conventions. In that case, %1 = vm.call @foo(%0) would simply be IREE_RETURN_IF_ERROR(foo(v0, &v1));
Of other things to start testing next (building up to running full modules using the HAL):

br/cond_br
module state for global variables/initialization function
iree_vm_ref_t support for ref<...> types

With what we already have landed, this is basically done! :partying_face:


Shortcut to open parent PDF in your default PDF viewer

Description
By pressing (e.g. CTRL+ALT+P) SMA finds path in #Link (SM references) and launches the parent PDF e.g. via CMD line in windows (or however you plan to do this)

Result: PDF is opened in your preferred PDF viewer (instead of smt like internet explorer)
Motivation
In case of quickly looking up things in clear PDF (without extract markers etc.)
Probably a lot of advanced users would find this useful at some point.
Documentation-type explanation

CTRL+ALT+P
Original PDF in currently activated element is opened in your favourite PDF viewer

Great idea. It could also work when used on the current PDF element


Support of youtube-nocookie.com

Is it possible to add the support of youtube-nocookie.com embedded videos? I want to use the Flash player (as long as HTML5 fullscreen don't pop out to use in an other screen) and it is not replaced for youtube-nocookie.com videos. I tried to add some @match/@includes but it didn't work.

Edit the userscript and look for this codeblock:
var domains = [
'www.youtube.com',
'youtube.com',
'apis.google.com',
'plus.googleapis.com'
]
Add extra websites here following the same syntax, assuming said website is a youtube derivative and not completely different the script should function. No promises.

Ok nice, it works with 2 changes:
var domains = ["www.youtube.com", "youtube.com", "www.youtube-nocookie.com", "youtube-nocookie.com", "apis.google.com", "plus.googleapis.com"]
} else if (!!url.match(/^http(s)?://(www.)?youtube**(-nocookie)?**.com/embed//) || !!url.match(/^http(s)?://(www.)?youtube.com/watch_popup?//))
Will it be integrated?


Projections shows garbage for indices of 4d, 5d, 6d array elements

Original issue: https://charm.cs.illinois.edu/redmine/issues/1694

Projections seems to come with an implicit assumption that chare arrays have (at most) 3 dimensions, and hence element indices have 3 components. For elements of higher dimension chare arrays, the values shown for object for the 'Id' field in the Timeline view seem to be garbage. E.g. look at traces from `examples/charm++/Molecular2D
Eric, have you ever seen this in traces from OpenAtom? That uses chare arrays of dimension greater than 3d, right?

Original date: 2017-11-02 02:29:03

I happened to be looking at CkArrayIndex for issue #1065, realized it was missing support in places for >3 dimensional arrays, and remembered this bug.
This adds the support for that and updates the tracing code accordingly. Projections itself will need to be updated to process the CmiObjId objects as either int or short arrays depending on the dimensionality.
https://charm.cs.illinois.edu/gerrit/#/c/3218/

Original date: 2017-11-03 17:52:25

Can you take over 3218? It's failing in LDSend() currently. I think there might be another object in the LB Database that stores array indices?

Original date: 2018-02-11 19:06:23

Projections needs the corresponding support to display >3 dimensional array indices.

Original date: 2018-04-20 00:04:49

https://charm.cs.illinois.edu/gerrit/#/c/projections/+/4034/