Linux specific commands and files unavailable on Mac OS

With the introduction of parsing /proc/self/stat, fish-async-prompt does not work on Mac OS.
https://github.com/acomagu/fish-async-prompt/blob/f2dc2b860068a2558ba116069a892a67af9ce228/conf.d/__async_prompt.fish#L142
Related to errors below: https://github.com/acomagu/fish-async-prompt/blob/f2dc2b860068a2558ba116069a892a67af9ce228/conf.d/__async_prompt.fish#L11
When I try to enable via fundle:
 ~/w/source    exec fish                                                                                17.5s  Wed Jan  9 10:47:57 2019
acomagu/fish-async-prompt not installed. You may need to run 'fundle install'
See the docs for more info. https://github.com/tuvistavie/fundle
Darwin pug.local 18.2.0 x86_64
 10:48:00  up 7 days  0:28,  1 user,  load average: 2.71, 3.60, 3.73
 ~/w/source    fundle install                                                                                Wed Jan  9 10:48:03 2019
Installing acomagu/fish-async-prompt
edc/bass installed in /Users/mshields/.config/fish/fundle/edc/bass
oh-my-fish/plugin-bang-bang installed in /Users/mshields/.config/fish/fundle/oh-my-fish/plugin-bang-bang
oh-my-fish/plugin-expand installed in /Users/mshields/.config/fish/fundle/oh-my-fish/plugin-expand
oh-my-fish/theme-bobthefish installed in /Users/mshields/.config/fish/fundle/oh-my-fish/theme-bobthefish
tuvistavie/fish-fastdir installed in /Users/mshields/.config/fish/fundle/tuvistavie/fish-fastdir
sed: illegal option -- r
usage: sed script [-Ealn] [-i extension] [file ...]
       sed [-Ealn] [-i extension] [-e script] ... [-f script_file] ... [file ...]
cat: /proc/self/stat: No such file or directory
fish: option requires an argument -- c
cat: /proc/self/stat: No such file or directory
fish: option requires an argument -- c

Do #2 resolve this?

Thanks for checking in.
I cleaned up my currently installed fish-async-prompt then reinstalled.  I had to upgrade my fish to the latest with macports. Once that was done, I now have a working fish async prompt.  Thank you so much!


Improve test coverage in Realm

Filing an issue to discuss ways of improving test coverage in Realm. This is an initial post and I will fill it in with more details shortly.

The main objective for us is to keep Realm's codebase of the highest possible quality. We need to determine whether it will be beneficial for us to increase the test coverage, introduce tools to make it easy for the community to write GOOD tests.
Realm has already a number of comprehensive tests that cover the existing features and code paths. However, not everything is tested and many code paths are tested only indirectly. This makes it harder to reason about the capabilities of a specific feature, class, function or line of code. It's also not trivial to extend the existing tests when either a new code is added or an existing code is changed.

We need to determine whether adopting an existing C++ unit testing framework would improve our development workflow..e.g. make it faster, make it easier, make it safer. Among the existing frameworks the proposal is to look into the GoogleTest and BoostTest. Perhaps, writing our own test infrastructure will be faster, simpler and allow us to avoid unnecessary dependencies on external libraries which do not control.
We need to determine what has already been covered and what needs to covered .e.g. to quantify this work.
We need to determine the future format of tests..granularity etc. The proposal will be to cover every existing function per c++ class and source file. For example,

 https://github.com/StanfordLegion/legion/blob/stable/runtime/realm/transfer/transfer.cc
 https://github.com/StanfordLegion/legion/blob/stable/runtime/realm/transfer/transfer_test.cc
 transfer_test.cc {
  class TransferIteratorIndexSpaceTest {}
  class TransferIteratorIndirectTest{}
  class TransferIteratorIndirectRange {}
  ...
  RUN_TESTS(
   FOR_EACH_TEST_CLASS(
    FOR_EACH_TEST(...))))

Easier said that done. Many class have dependencies therefore we need to find a way to mock the functionality in order for us write independent tests.

@lightsighter please let me know what you think. The proposal is pretty high level but we can add any of level of details here if need be.

We need to determine whether adopting an existing C++ unit testing framework would improve our development workflow..e.g. make it faster, make it easier, make it safer.

I'm not completely against this as long as whoever is deciding to implement it is going to support it for the entire Legion/Realm community. I personally think we should start small and just add tests to our existing CI infrastructure. At some point maybe it merits having a more formal test infrastructure, but in our current state I think it will be better just to start writing tests and letting the CI check them. We have a test.py script at the top-level of the repo that can run various different subsets of tests in the CI. You can also use that for manually running subsets of tests as well (e.g. all the Realm tests). Until we have some scalability or performance issue with test.py, let's just keep adding to it so we spend our time on writing tests and not building new infrastructure where our current infrastructure is "good enough". If you'd like to make an argument though as to why the current infrastructure is not "good enough", then by all means go ahead and do so.

We need to determine what has already been covered and what needs to covered .e.g. to quantify this work.

I think we have some code coverage results of Realm tests already. I will try to dig those up. If we're going to have a metric, then code coverage is the obvious one that comes to my mind. I would be quite satisfied if we had one test that ran each line of code (probably unrealistic since there are a lot of timing-dependent branches in Realm, but if we could get into the 90% range then that would be very good).

We need to determine the future format of tests..granularity etc. The proposal will be to cover every existing function per c++ class and source file.

I think this is a bit unrealistic, especially with a system as big as Realm. I think it be better to start off with writing a unit-test for each class and method in the user-facing API. It will be more directed and more likely to shake out bugs that Realm clients will see. If we finish that and we then want to go do the same thing for all internal classes and methods, we can do then do that, but best to start with what the user interacts with first.

We actually have performance tests. The problems there are all infrastructure related:

Where do you run the tests? CI runners are very non-ideal for this. But running this on "real" machines is expensive (both in machine and human time). My last attempt to set this up on Titan was a disaster; the jobs kept dying, and I had to keep manually checking to make sure they stayed up. There is a constant operational cost to doing this so unless someone is going to commit to doing this, we're not going to be able to keep this available long-term.
How do you visualize the results? We used to do this at https://legion.stanford.edu/perf-frontend/perf_chart.html (in fact, that link is still up), but our visualization is very non-scalable (as you can see if you load that link). I'm not aware of any prebuilt interfaces we can use here, which is why I built the above, but it needs more work to actually be useful.
How do you detect and notify on the results? Without notifications, you need to manually check the website, which we never did, so ultimately all of the performance monitoring infrastructure ever mattered. I think you'd need to solve this to make it practically useful.

Here are some code coverage results for Realm as it exists today.
First, the existing Realm and Legion C++ tests with multi-node with Networking and GPUs:
http://sapling.stanford.edu/~mebauer/coverage/coverage.realm.html
Then, the Regent test suite with multi-node but no GPUs:
http://sapling.stanford.edu/~mebauer/coverage/regent.html

@lightsighter Is that automated? Should we automate it?
@eddy16112 Sapling would catch some regressions but not others. Recently it seems like most of our bugs/performance issues only appear at large-ish node counts, though there are some occasional code generation bugs or ones related to static optimization (e.g., we've had problems in the past with the static branches for logging levels not working properly).
I don't think watching for large changes only would be sufficient. It would catch large changes, yes, but not smaller changes over time. This is the reason why I want the graph-over-time aspect: it'll make it hopefully obvious if we're on a gradual downward slope, or if the behavior we're observing is just noise. In the past, we saw a lot of noise and it made it hard to automate anything.
One other thing I'll add is operational complexity. I don't really want our solution to this problem to be, "let's run a database on Sapling". We've had data loss on Sapling multiple times. We literally lost a previous version of the performance tool for this reason. The performance tool that I proposed was specifically designed to use Github as the data store to avoid any operational complexity due to needing to maintain state on our own hardware. That works (and I think pretty decently), but right now the client isn't fast enough to keep up with the data. But if we replace it, I think it will be a step backwards if we do so by installing a persistent data store on a machine somewhere.

Is that automated? Should we automate it?

It's not automated right now. It's a bit of a pain to get gcov working, especially with Terra. If we wanted to automate it into the build system that would be good, but it's probably not worth the effort of automating it into the CI.

@lightsighter Could you please provide some pointers on how to generate/update the following coverage graphs

http://sapling.stanford.edu/~mebauer/coverage/coverage.realm.html

The simplest thing to do is just to have gcc dump coverage files for Realm and then run the test suite and post process the results with gcovr:
https://gcovr.com/en/stable/getting-started.html#getting-started
Mainly you just need to add the --coverage flag when compiling Realm. That should be enough for getting started with just the Realm and Legion C++ test suites. If we want to add the Regent test suite that was a bit harder and I don't remember all the steps I had to take to do that but I remember it wasn't pleasant.


test: added Kuttl tests to check conversion webhooks

Signed-off-by: Florian Bacher<EMAIL_ADDRESS>

@bacherfl I think we need a teststep to annotate the autogenerated namespace?


Add support to create a container from jar

Currently, spring-boot supports image customization via maven or gradle in the latest snapshots get
[INFO] Building image 'docker.io/library/demo:0.0.1-SNAPSHOT'
[INFO]
[INFO]  > Pulling builder image 'gcr.io/buildpacks/builder:latest' 100%
[INFO]  > Pulled builder image 'gcr.io/buildpacks/builder@sha256:efb5f9b7cd976ab6e5a959f453795863a476878be8e5c20b50db22c8aec1227f'
[INFO]  > Pulling run image 'gcr.io/buildpacks/gcp/run:latest' 100%
[INFO]  > Pulled run image 'gcr.io/buildpacks/gcp/run@sha256:9b3973dd6765f88815318454e337b7f5aacf25cf27f3038be49ef18cf6fce3b1'
[INFO]  > Executing lifecycle version v0.7.5
[INFO]  > Using build cache volume 'pack-cache-5cbe5692dbc4.build'
[INFO]
[INFO]  > Running creator
[INFO]     [creator]     ---> DETECTING
[INFO]     [creator]     ERROR: No buildpack groups passed detection.
[INFO]     [creator]     ERROR: Please check that you are running against the correct path.
[INFO]     [creator]     ERROR: failed to detect: failed to detect: no buildpacks participating

and this is due to spring-boot already build the jar so the builder is not able to detect the jar produced. I think will be nice to have this.
Originally posted by @eddumelendez in https://github.com/GoogleCloudPlatform/buildpacks/issues/32#issuecomment-632735912

Thank you for the report. We do support creating containers from jar files, but only from the project root at the moment. What is the structure of the directory that spring-boot calls the build from?

for maven projects the jar is inside root-project -> target -> jar and for gradle is root-project -> build -> libs -> jar

Our buildpacks work with springboot [1] and do support searching in the generated directory for jars [2]. What exactly is your request? Can you provide some sort of code sample and step-by-step instructions on the commands you are trying to run. Thanks!
[1] https://github.com/GoogleCloudPlatform/buildpacks/tree/master/builders/testdata/java/springboot-helloworld
[2] https://github.com/GoogleCloudPlatform/buildpacks/blob/master/pkg/java/java.go#L49

I believe the java/runtime buildpack is at fault here. Even though we look for jars in both maven and gradle output directories in the java/entrypoint buildpack, the java/runtime buildpack does not look for nested jars and opts out, failing the build.

examples are attached. They are generated from start.spring.io with the latest snapshots only
In order to run gradle-demo: ./gradlew bootBuildImage --builder=gcr.io/buildpacks/builder
In order to run maven-demo:./mvnw spring-boot:build-image -DskipTests -Dspring-boot.build-image.builder=gcr.io/buildpacks/builder
Both generate the error message ERROR: No buildpack groups passed detection.
gradle-demo.zip
maven-demo.zip

I have enabled the logging and this is the result. Instructions in the previous comment
[INFO]  > Running creator
[INFO]     [creator]     ---> DETECTING
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     GOOGLE_FUNCTION_TARGET not set
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     No project files nor .dll files found.
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     no project file found and GOOGLE_BUILDABLE not set.
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     GOOGLE_ENTRYPOINT not set and Procfile not found
[INFO]     [creator]     ======== Results ========
[INFO]     [creator]     skip<EMAIL_ADDRESS>[INFO]     [creator]     fail<EMAIL_ADDRESS>[INFO]     [creator]     fail<EMAIL_ADDRESS>[INFO]     [creator]     skip<EMAIL_ADDRESS>[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     No project files nor .dll files found.
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     GOOGLE_ENTRYPOINT not set and Procfile not found
[INFO]     [creator]     ======== Results ========
[INFO]     [creator]     fail<EMAIL_ADDRESS>[INFO]     [creator]     fail<EMAIL_ADDRESS>[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     No *.go files found.
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     GOOGLE_FUNCTION_TARGET not set
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     No *.go files found
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     GOOGLE_ENTRYPOINT not set and Procfile not found
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     GOOGLE_CLEAR_SOURCE not set
[INFO]     [creator]     ======== Results ========
[INFO]     [creator]     fail<EMAIL_ADDRESS>[INFO]     [creator]     fail<EMAIL_ADDRESS>[INFO]     [creator]     fail<EMAIL_ADDRESS>[INFO]     [creator]     skip<EMAIL_ADDRESS>[INFO]     [creator]     skip<EMAIL_ADDRESS>[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     No *.go files found.
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     No *.go files found
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     GOOGLE_ENTRYPOINT not set and Procfile not found
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     GOOGLE_CLEAR_SOURCE not set
[INFO]     [creator]     ======== Results ========
[INFO]     [creator]     fail<EMAIL_ADDRESS>[INFO]     [creator]     pass<EMAIL_ADDRESS>[INFO]     [creator]     fail<EMAIL_ADDRESS>[INFO]     [creator]     skip<EMAIL_ADDRESS>[INFO]     [creator]     skip<EMAIL_ADDRESS>[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     None of the following found: pom.xml, build.gradle, build.gradle.kts, *.java, *.jar.
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     pom.xml not found.
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     GOOGLE_ENTRYPOINT not set and Procfile not found
[INFO]     [creator]     ======== Results ========
[INFO]     [creator]     fail<EMAIL_ADDRESS>[INFO]     [creator]     fail<EMAIL_ADDRESS>[INFO]     [creator]     fail<EMAIL_ADDRESS>[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     None of the following found: pom.xml, build.gradle, build.gradle.kts, *.java, *.jar.
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     pom.xml not found.
[INFO]     [creator]     ======== Results ========
[INFO]     [creator]     fail<EMAIL_ADDRESS>[INFO]     [creator]     fail<EMAIL_ADDRESS>[INFO]     [creator]     pass<EMAIL_ADDRESS>[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     None of the following found: pom.xml, build.gradle, build.gradle.kts, *.java, *.jar.
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     Neither build.gradle nor build.gradle.kts found.
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     GOOGLE_ENTRYPOINT not set and Procfile not found
[INFO]     [creator]     ======== Results ========
[INFO]     [creator]     fail<EMAIL_ADDRESS>[INFO]     [creator]     skip<EMAIL_ADDRESS>[INFO]     [creator]     fail<EMAIL_ADDRESS>[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     None of the following found: pom.xml, build.gradle, build.gradle.kts, *.java, *.jar.
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     Neither build.gradle nor build.gradle.kts found.
[INFO]     [creator]     ======== Results ========
[INFO]     [creator]     fail<EMAIL_ADDRESS>[INFO]     [creator]     skip<EMAIL_ADDRESS>[INFO]     [creator]     pass<EMAIL_ADDRESS>[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     No *.py files found.
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     GOOGLE_FUNCTION_TARGET not set
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     requirements.txt not found
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     GOOGLE_ENTRYPOINT not set and Procfile not found
[INFO]     [creator]     ======== Results ========
[INFO]     [creator]     fail<EMAIL_ADDRESS>[INFO]     [creator]     fail<EMAIL_ADDRESS>[INFO]     [creator]     skip<EMAIL_ADDRESS>[INFO]     [creator]     skip<EMAIL_ADDRESS>[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     No *.py files found.
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     requirements.txt not found
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     GOOGLE_ENTRYPOINT not set and Procfile not found
[INFO]     [creator]     ======== Results ========
[INFO]     [creator]     fail<EMAIL_ADDRESS>[INFO]     [creator]     skip<EMAIL_ADDRESS>[INFO]     [creator]     fail<EMAIL_ADDRESS>[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     package.json not found and no *.js files found
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     yarn.lock not found.
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     GOOGLE_FUNCTION_TARGET not set
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     GOOGLE_ENTRYPOINT not set and Procfile not found
[INFO]     [creator]     ======== Results ========
[INFO]     [creator]     fail<EMAIL_ADDRESS>[INFO]     [creator]     fail<EMAIL_ADDRESS>[INFO]     [creator]     skip<EMAIL_ADDRESS>[INFO]     [creator]     skip<EMAIL_ADDRESS>[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     package.json not found and no *.js files found
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     package.json not found.
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     GOOGLE_FUNCTION_TARGET not set
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     GOOGLE_ENTRYPOINT not set and Procfile not found
[INFO]     [creator]     ======== Results ========
[INFO]     [creator]     fail<EMAIL_ADDRESS>[INFO]     [creator]     fail<EMAIL_ADDRESS>[INFO]     [creator]     skip<EMAIL_ADDRESS>[INFO]     [creator]     skip<EMAIL_ADDRESS>[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     package.json not found and no *.js files found
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     GOOGLE_FUNCTION_TARGET not set
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     GOOGLE_ENTRYPOINT not set and Procfile not found
[INFO]     [creator]     ======== Results ========
[INFO]     [creator]     fail<EMAIL_ADDRESS>[INFO]     [creator]     fail<EMAIL_ADDRESS>[INFO]     [creator]     skip<EMAIL_ADDRESS>[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     package.json not found and no *.js files found
[INFO]     [creator]     ======== Output<EMAIL_ADDRESS>========
[INFO]     [creator]     GOOGLE_ENTRYPOINT not set and Procfile not found
[INFO]     [creator]     ======== Results ========
[INFO]     [creator]     fail<EMAIL_ADDRESS>[INFO]     [creator]     fail<EMAIL_ADDRESS>[INFO]     [creator]     ERROR: No buildpack groups passed detection.
[INFO]     [creator]     ERROR: Please check that you are running against the correct path.
[INFO]     [creator]     ERROR: failed to detect: failed to detect: no buildpacks participating

We do support creating containers from jar files, but only from the project root at the moment.

Even though we look for jars in both maven and gradle output directories in the java/entrypoint buildpack

The Spring Boot plugins for Maven and Gradle will only provide a jar file to the CNB builder when the image-building features are used (e.g. with the mvn spring-boot:build-image goal or gradle bootBuildImage task). This is the equivalent of only providing a jar file as the target with the pack build CLI command. For example, with a Gradle-built project the pack build command to build an image from a jar file would be:
$ pack build docker.io/library/demo:0.1 --builder <builder-image-name> --path build/libs/demo-0.0.1-SNAPSHOT.jar

If buildpacks only support detection of jar files in known locations from the project root, then they won't work with Spring Boot's Maven and Gradle plugins. The gist of this issue is to consider adding the ability to detect a Java application from only a jar file as an option in the Google Cloud Platform buildpacks.

The java/runtime buildpack will currently not pass detection unless the jar file is at application root, however, builds still fail after updating the logic. It looks like Spring Boot runs the build with an exploded jar, which we do not support yet,  i.e.
./META-INF/MANIFEST.MF
./org/springframework/boot/...
./BOOT-INF/classpath.idx
./BOOT-INF/lib/...
./BOOT-INF/classes/...


On the type of Luv.Loop.run and "natural APIs" more generally.

Luv.Loop.run returns a boolean value whose meaning does not seem to be documented and, judging by the examples, in most cases is not used, but usually just ignored.
I would argue that using ignore without any type annotation is very error-prone because it sets the trap for accidental partial application. It should be considered bad style IMO, and therefore should be avoided particularly in examples. I also think Luv.Loop.run exacerbates the likelihood of errors because its arguments are all optional except for the terminating unit. It's very easy to specify one or more optional arguments but forget the terminating unit. This leads to partial application, and with the use of ignore will go entirely unnoticed except for the observation that nothing is happening, which is a symptom that doesn't narrow down the possible causes a whole lot.
These issues are also in most cases preventable by providing a better API, for example:
val run_indefinitely : ?loop:t -> unit -> unit
val run_once : ?loop:t -> unit -> bool
val run_once_wait : ?loop:t -> unit -> bool

I still don't know what the bool means of course, so this might still be way off. My assumption here is that it means there's more work to do, or something along those lines. But if it means something else this API probably doesn't make much sense.
Furthermore, it's a stated goal for Luv to provide "more natural APIs":

where libuv is forced to offer difficult APIs due to the limitations of C, Luv provides more natural APIs

But it's also stated that Luv is "a fairly thin binding", which to a significant extent opposes the above goal. And there's certainly also a documentation and familiarity benefit of having the API closely mirroring the original.
So there are two parts to this issue I think. One is the more general question of how much deviation from the C API is considered acceptable. Where the line is, or should be, drawn between providing "natural APIs" and being a thin binding. The other is the specific question concerning this particular API, its use cases, the meaning of the boolean and what follows as a natural API
To summarize:

The bool return type of Luv.Loop.run is not documented.
It is apparently typically not used, which leads to prevalent use of ignore.
ignore is error-prone and IMO bad style.
It can be prevented by providing a better, more natural, API (in some future version 2.0).
But the main question is whether doing so aligns with Luv's goals.

PS. I'm just starting to get my feet wet with Luv, and so far it seems very solid and well-documented, although in need of some polish in places. I ask the more general question because this isn't the only part of the API that feels unnatural. The use of init everywhere, for example, seems unnecessary in most use cases. Anyway, it's certainly still very usable thanks to the great work you've done on documentation, and I want to emphasize how much I personally appreciate that little detail, as well as thank you for the library as a whole.

Here's an initial "thinking" response. None of it reflects any "final" decisions I am making; instead, I just want to reply with my thoughts until now, such as the considerations that went into making the OCaml API how it is. We can discuss further :)

Luv.Loop.run returns a boolean value whose meaning does not seem to be documented and, judging by the examples, in most cases is not used, but usually just ignored.

Luv.Loop.run's return value is documented at uv_run in the libuv docs, in each of the bullet points of the list. In general, the OCaml docs attempt to be thin, provide links to the C docs, and treat the C docs as the definitive reference. This is true not only with respect to libuv, but especially more so with respect to linking man pages, where there is no hope, for example, of describing all the error conditions exactly, since they differ system by system. For this reason, the docs also link to at least POSIX man pages wherever possible, and the intent is for readers to visit them for a full understanding.
Would it help to more prominently indicate to readers, that the docs should be used in this way?

I would argue that using ignore without any type annotation is very error-prone because it sets the trap for accidental partial application. It should be considered bad style IMO, and therefore should be avoided particularly in examples. I also think Luv.Loop.run exacerbates the likelihood of errors because its arguments are all optional except for the terminating unit. It's very easy to specify one or more optional arguments but forget the terminating unit. This leads to partial application, and with the use of ignore will go entirely unnoticed except for the observation that nothing is happening, which is a symptom that doesn't narrow down the possible causes a whole lot.

This is definitely a real ergonomics issue on the OCaml side. I should probably begin with rewriting the examples not to use ignore. After that, we can look into a higher-level API.

Furthermore, it's a stated goal for Luv to provide "more natural APIs":

where libuv is forced to offer difficult APIs due to the limitations of C, Luv provides more natural APIs

But it's also stated that Luv is "a fairly thin binding", which to a significant extent opposes the above goal. And there's certainly also a documentation and familiarity benefit of having the API closely mirroring the original.

Indeed, but the stated goal is not exactly to provide "more natural APIs" — quoting it that way discards context, and if that context is not discarded, the opposition in goals goes away, too :) As it says, the goal of more natural APIs only applies in places where the libuv API is hampered by C, such as in uv_spawn, where the huge number of options leads libuv to choose to take a struct as an argument, with several helper enums, etc. In all other cases, the goal is to keep the API as easy to map to the C API as possible. So, the "more natural APIs" goal only applies where the C API is so thoroughly annoying, that you'd rather not learn it in the first place, and don't want anything to correspond directly to it, but just want a mapping from a more natural API explained in the OCaml docs, in case you need to refer to C :) In other words, we can readily imagine that users and authors of uv_spawn didn't want it to be the way it is, but they had no better choice.

So there are two parts to this issue I think. One is the more general question of how much deviation from the C API is considered acceptable. Where the line is, or should be, drawn between providing "natural APIs" and being a thin binding. The other [...]

I agree with this. Part of the issue is that I originally saw two "major" use cases for Luv:

Internally in Lwt_unix, to replace the current implementation by libuv.
Internally in a wrapper that will drive libuv (through Luv) on native, and Node on JS.

Since I imagined the library would be mostly used in the implementation of other libraries, I thought it's acceptable (even desirable) to trade polish of the API for direct, predictable correspondence with the behavior of libuv, so that Luv stays out of the way of higher-level implementors as much as possible, except where all likely implementors would probably agree that something should just be taken care of as part of the translation done by Luv.
If Luv gets more direct usage, this will probably have to be adjusted in some way. Perhaps a thin wrapper with less sharp corners would need to be written, or there is a compromise on all strange APIs that can be found, that makes Luv directly suitable for both kinds of usage.

Also

It can be prevented by providing a better, more natural, API (in some future version 2.0).

We can just break Luv all the time, it's in 0.x and has few users :)

The use of init everywhere, for example, seems unnecessary in most use cases

Don't we need creation functions for most kinds of objects?
The choice of name init is not typical for OCaml, but I made it to correspond to the names in the libuv API.
Also, I will add a sentence at Luv.Loop.run about looking in uv_run docs for the explanation of the return value.

I added the minimal, initial change of replacing
ignore (Luv.Loop.run ())

by
ignore (Luv.Loop.run () : bool)

in the README and all examples, so that at least it forms a habit that, if practiced, will make partial application less likely. Posted the new docs.

Thanks! I completely agree with the approach of having Luv be thin low-level bindings that correspond closely with its C counterpart, and building higher-level bindings on top of that. I've even used this approach before myself. I guess my expectations were just skewed a bit because despite being low-level and relatively unpolished, this is still the most polished and well-documented API I'm aware of for what it provides!
It might still make sense to make minor alterations like turning the Loop modes into separate functions, but only as long as the name reflects that they're all variations of uv_run. I think the API I proposed above does that, despite having other issues.

Would it help to more prominently indicate to readers, that the docs should be used in this way?

Definitely. Although I did look at the docs for uv_run, but I guess I expected a stand-alone sentence describing the return type and didn't consider that it would depend so much on the "mode". There's still a difference between the int returned by uv_run and the bool returned by Loop.run though, and the relation between them isn't entirely obvious. I'm guessing 0 here corresponds to false, but often C APIs return error codes where 0 means success, which might be more natural to map to true.

[...] quoting it that way discards context, and if that context is not discarded, the opposition in goals goes away, too :)

To be fair, I did quote it with that context too, although that still didn't stop me from interpreting it wider than intended :)

Don't we need creation functions for most kinds of objects?
The choice of name init is not typical for OCaml, but I made it to correspond to the names in the libuv API.

The APIs I've interacted with so far, mostly just Loop and FS_event, don't seem like objects though. In FS_event, for example, it would in most cases be sufficient for start and init to be a single function, returning a handle to be passed to stop later. I can't imagine a scenario where it makes sense to call init without immediately calling start.
Of course arguments to the contrary include consistency across modules and correspondence with the C API, and I think you've already convinced me that it should remain as it is. But if the goal was a more natural API then init certainly sticks out in this case at least.

It might still make sense to make minor alterations like turning the Loop modes into separate functions, but only as long as the name reflects that they're all variations of uv_run. I think the API I proposed above does that, despite having other issues.

It occurs to me that we probably only need one of those, Luv.Loop.run_indefinitely. The other modes are kind of "advanced." They would probably be only used for people working on an integration or doing something unusual, i.e. experts, and I think we can realistically rely on them looking a the function signature of run carefully.

I expected a stand-alone sentence describing the return type and didn't consider that it would depend so much on the "mode". There's still a difference between the int returned by uv_run and the bool returned by Loop.run though, and the relation between them isn't entirely obvious. I'm guessing 0 here corresponds to false, but often C APIs return error codes where 0 means success, which might more naturally map to true.

Thanks, I added a further commit with a sentence about that.

The APIs I've interacted with so far, mostly just Loop and FS_event, don't seem like objects though.

Indeed, FS_event would look a bit different in an OCaml API. But it is an object in libuv, because it is an FS_event handle, and has all the handle functions, etc. A higher-level wrapper of libuv that did filesystem watching would probably hide all that (it's been discussed :)).
Apart from consistency on the level of aesthetics or reading docs, there is a certain subtype relationship between libuv base handles and FS_event that I'd like the basic Luv API to maintain. For example, among other things, active FS_event handles can be found through loop querying functions. I suspect this kind of usage of a loop and an FS_event handle would be extremely rare, and limited to experts only. Nonetheless I wouldn't want Luv itself to become a technical obstacle to it.

It occurs to me that we probably only need one of those, Luv.Loop.run_indefinitely. The other modes are kind of "advanced." They would probably be only used for people working on an integration or doing something unusual, i.e. experts, and I think we can realistically rely on them looking at the function signature of run carefully.

Yep, like me 😬 So maybe not 😉
I'm integrating with Revery, which has its own app loop and offers no control over it. I have to hook into it with what's essentially a setTimeout(..., 0) and run the loop with  `NOWAIT.
Revery in turn (via another dependency) uses requestAnimationFrame when compiled to JS, so I don't think it can be made to offer much more control over the loop either. I think this scenario might be relatively common as well.

A higher-level wrapper of libuv that did filesystem watching would probably hide all that (it's been discussed :)).

Cool! We need an API that does globbing as well., or essentially the ability to emulate the fswatch API. So if that aligns with those plans, I'm pretty sure we can offer some manpower to get it going relatively soon.

Apart from consistency on the level of aesthetics or reading docs, there is a certain subtype relationship between libuv base handles and FS_event that I'd like the basic Luv API to maintain. [...] I wouldn't want Luv itself to become a technical obstacle to it.

Yeah that makes complete sense. Thanks for explaining!

Related question that maybe could result in something being added to the docs: When you are using the default mode, and you get true back, that corresponds to non-zero value from libuv, so that indicates that there are still active handles or requests. Should this be treated as an error case by the caller, and other calls should be made first to close connections, or is this expected? Does it just indicate that at the time of calling Luv.Handle.close, there were active connections, but they will all be closed cleanly?

Could you create a little program that creates a long-lived connection to some test server, then stops the default loop. Does this cause run to return true? If so, do you observe the connection getting closed, or does it linger on? I will add a note to the docs with your findings.

(Or merge a PR to the docs, as you choose! :) )


breaks when firefox developer tools are opened

firefox release channel 53.0.3, 64-bit, macOS Sierra 10.12.5. happens in safe mode even.
open any of the examples on the demo page. play around with it, works as normal. open dev tools (f12). suddenly the directive breaks - on dragging any of the draggables, it just disappears from the list.
does not happen in chrome.

hmm, isn't happening anymore even though I don't think I changed anything. weird.


raymarcher-lolgeny

I wrote a raymarcher, using small crosses to create different pen thicknesses, an SDF made of mostly spheres and a link object (with smooth blending), and ambient + diffuse lighting.
Parameters include the position of the camera, the lights, the level of detail, and position of spheres. Additionally, random spheres are generated in the background for effect.
It was very educational to make as I wanted to learn more about raymarching and SDFs.

Very cool 👌


Support InstalledBuild for HTML5 platform

Current state:
Running W:/Dawg/UE4.24/LocalBuilds/Engine/Windows/Engine/Binaries/DotNET/UnrealBuildTool.exe  -projectfiles -project="W:/Dawg/MyProject2/MyProject2.uproject" -game -rocket -progress
WARNING: Unable to read platform from PlatformName="HTML5", Configuration="DebugGame", PlatformType="Game", RequiredFile="Engine\Binaries\HTML5\UE4Game.target", ProjectType="Any", bCanBeDisplayed=False
WARNING: Unable to read platform from PlatformName="HTML5", Configuration="Development", PlatformType="Game", RequiredFile="Engine\Binaries\HTML5\UE4Game.target", ProjectType="Any", bCanBeDisplayed=False
WARNING: Unable to read platform from PlatformName="HTML5", Configuration="Shipping", PlatformType="Game", RequiredFile="Engine\Binaries\HTML5\UE4Game-HTML5-Shipping.target", ProjectType="Any", bCanBeDisplayed=False
Discovering modules, targets and source code for project...
ERROR: The platform name HTML5 is not a valid platform name. Valid names are (Win32,Win64,HoloLens,Mac,XboxOne,PS4,IOS,Android,Linux,LinuxAArch64,AllDesktop,TVOS,Switch,Quail,Lumin)
       while parsing module descriptor 'BackChannel'


Allow rebar3_sbom (and Hex) to identify license for library

Hi.
We're using rebar3_sbom to build a list of dependency licenses so we can later filter on them. This plugin works with the information accessible from the .app.src file, as per https://github.com/voltone/rebar3_sbom/issues/16.
This pull request adds to that file as per https://github.com/okeuday/quickrand/blob/master/LICENSE.
Further considerations
I also noticed that rebar.lock is not checked in, and _build is not .gitignored. Lemme know if you want me to push changes related to this.

Hi @kivra-pauoli ,
If you modified rebar3_sbom to extract the license from the LICENSE file when the licenses entry is missing from the .app.src file, that would be best because that would benefit the most repositories with the least effort.  I know the idea was mentioned already here.  GitHub uses the LICENSE file contents, so depending on that file as a source of truth would pursue current conventions.
Adding non-standard entries into the .app file causes reltool warnings and I prefer avoiding those warnings while keeping my repositories build/release tool agnostic.  I still prefer using rebar2 for the reasons described there, but I do use rebar3 and mix too.  Due to using different build tools in different ways, I also prefer not having entries in the .gitignore file, to ensure I can just delete the files I don't want easily, based on what I am doing (it gives the files more visibility, so they don't cause annoying problems due to stale data).
I don't see rebar.lock as something dependable and instead ensure everything works with tags.
So, closing this and the uuid issue for now because it is hard to justify these changes.  It really is much better if rebar3_sbom checks the LICENSE file.

Ok, thanks.
I see Hex already identifies this as MIT, most likely because of https://github.com/okeuday/quickrand/blob/master/mix.exs#L42.
If it were using LICENSE probably the same reasoning could be applied there.


Support function attributes in static ctor/dtor parsing

Member function attributes can be placed after the parenthesis and before the function body in the staticConstructor, sharedStaticConstructor, staticDestructor, and sharedStaticDestructor grammar rules.

[x] Support this in libdparse
[x] File issue on the dlang bug tracker

https://github.com/D-Programming-Language/dlang.org/pull/1228


Wrong date in web ui

Describe the bug
The date in the web ui is one day before the real date. For example: Right now it is December 5th in my time zone, the web UI shows December 6th. In the docker container, the correct date of December 05 is displayed with date. Precisely because of the latter, I don't really understand why the date is incorrect. Is there an env variable to pass date/time correctly?
To Reproduce
Deploy the docker compose file below and check web ui.
Expected behavior
Environment (please complete the following information):
HOST:

OS: Debian
Architecture: amd64
Browser: Tested with ungoogled-chromium, firefox and edge
Version 0.24.3

I am running speedtest-tracker inside docker with this docker compose:
services:
    speedtest-tracker:
        container_name: speedtest-tracker
        ports:
            - 8081:80
            - 9543:443
        environment:
            - PUID=1000
            - PGID=1000
            - APP_KEY=base64:XXXXX
            - APP_URL=http://localhost
            - DISPLAY_TIMEZONE=Australia/Hobart
            - SPEEDTEST_SCHEDULE=0 * * * *
            - PRUNE_RESULTS_OLDER_THAN=7
            - DB_CONNECTION=sqlite
            - PUBLIC_DASHBOARD=true
        volumes:
            - ./config:/config
            - ./custom-ssl-keys:/config/keys
        image: lscr.io/linuxserver/speedtest-tracker:latest
        restart: unless-stopped

Screenshots

Logs

user@lab:~/home-ops/speedtest-tracker$ docker logs speedtest-tracker
[migrations] started
[migrations] 01-nginx-site-confs-default: skipped
[migrations] done
───────────────────────────────────────
  ██╗     ███████╗██╗ ██████╗
  ██║     ██╔════╝██║██╔═══██╗
  ██║     ███████╗██║██║   ██║
  ██║     ╚════██║██║██║   ██║
  ███████╗███████║██║╚██████╔╝
  ╚══════╝╚══════╝╚═╝ ╚═════╝

Brought to you by linuxserver.io
───────────────────────────────────────
To support the app dev(s) visit:
speedtest-tracker: https://github.com/sponsors/alexjustesen
To support LSIO projects visit:
https://www.linuxserver.io/donate/
───────────────────────────────────────
GID/UID
───────────────────────────────────────
User UID:    1000
User GID:    1000
───────────────────────────────────────
Linuxserver.io version: v0.24.3-ls61
Build-date: 2024-11-27T16:12:47+00:00
───────────────────────────────────────
using keys found in /config/keys
[custom-init] No custom files found, skipping...
[ls.io-init] done.

Additional context

Your DISPLAY_TIMEZONE is set to Australia/Hobart There it is already December 6th.

ah dang, thanks. Now it's correct (at least for me).


chore: remove deprecated method

It would be better to add Truth dependency and use the Truth rather than hamcrest

of course we can use truth but deprecated assertThat method has java docs which i am following and if googler says here you have to use truth than we can use that right ?

I think you can directly use Truth why to wait.


Implement Clone, Debug and Default for Config

Resolves #175

👍

@alexcrichton can I ask a question?
Config::default() is not the same as Config::new(). Maybe it more appropriate to make default method to call new as here. Some boolean fields of Config struct is true, but default implementation for bool returns false.

Oh oops good catch! Yeah let's have a manual implementation of Default that delegates to new


Add a discussion in the readme comparing this to other overlapping libraries (AsyncDisplayKit, ComponentKit, etc.)

There are some popular libraries out there that overlap with this library. Moving between them would take a lot of time, so it's important to pick the correct library for one's needs the first time. Adding a comparison would make it much easier for people to understand the tradeoffs and, assuming Hub has good tradeoffs, increase adoption of the library.

@michaeleiselsc Thanks for the suggestion. We’ll see what can be done about it.

In the meantime here’s a quick summary of the differences with the libraries you mention. For you (if your still wondering) and for future reference.

Hub Framework is a tool for taking some content, e.g. from JSON, and rendering it in a collection view. Showing said content using your own components (i.e. views).

There’s a lot more which is covered in the Getting started and concepts guides.

AsyncDisplayKit lets you move image decoding, text sizing and rendering, layout, and other expensive UI operations off the main thread, to keep the main thread available to respond to user interaction.

As such it’s something that could, theoretically, be used by Hub Framework to speed up rendering.

ComponentKit is similar to Hub Framework in that it’s great for showing “list views”. I’ve not used it myself but from I can tell one difference is that Hub Framework is tailored to “backend driven UIs”.

That is an entire view can be completely changed in the client by changing the JSON returned by your backend endpoint. AFAIK this would require code changes, or duplication of Hub Framework functionality in your app, with ComponentKit.
ComponentKit requires you to use Objective-C++ which unfortunately means it cannot be used from a Swift app.
ComponentKit borrows much from React which obviously makes it very interesting 😸

Thanks for the summary! Right now, the company I work for will probably pick AsyncDisplayKit because it solves immediate performance needs, and then see if Hub can be integrated later. I'll check back in on the project and its integration. But I think it will help adoption to make them work together, especially if it somehow provided a layer over AsyncDisplayKit so you didn't have to dig too deeply into AsyncDisplayKit to get started

The Hub Framework is being phased out at Spotify, and therefore we will not be maintaining it further.


HeaderComment - PHPDoc of class is removed

The PHP version you are using ($ php -v):
=> 7.2.8 (cli)
PHP CS Fixer version you are using ($ php-cs-fixer -V):
=> 2.13.0
The command you use to run PHP CS Fixer:
=> php-cs-fixer fix test.php
The configuration file you are using, if any:
return PhpCsFixer\Config::create()
    ->setRules([
        'header_comment' => [
            'header' => 'header',
        ],
    ])
;

If applicable, please provide minimum samples of PHP code (as plain text, not screenshots):

before running PHP CS Fixer (no changes):

<?php

/**
 * Class A.
 */
class A
{
}

with unexpected changes applied when running PHP CS Fixer:

<?php

/*
 * header
 */

class A
{
}

with the changes you expected instead:

<?php

/*
 * header
 */

/**
 * Class A.
 */
class A
{
}

Hi @maidmaid , thanks for the report!
Sadly you've been bitten by a long standing issue about the header-rule and how the fixer should detect if a PHPDoc or comment is a header or actually belongs to the class.
Hope someone can pick this one up in the near future, till than I'll leave your report open as it is valid.

Hi @SpacePossum, thanks for your answer. At least, it's clear now.

Hmm, but a header start with /* and the class phpdoc start with /** or is a header allowed to start with /**, too?

I always thought it is fine to have a header starting with /** , however it has been removed from the PSR5 proposal https://github.com/php-fig/fig-standards/commit/03457b81d2ece8071bfa8978da9bdd3fac8612d9#diff-9a10a11696dc38209c125ea9c57a565fL62  ...


Automatically map deduplicated safetensors weights to their original values

What does this PR do?
This PR automatically points tensors that were removed due to deduplication to their still existing twin.
In server.text_generation_server.utils.convert.py#convert_file, tensors that have a value equal to another tensor are removed from the list of weights. Their name, and the name of the still-existing "twin" are logged to the "metadata" dictionary. However, this dictionary was not yet used during loading. This requires explicit in-code remapping when loading the models (as mentioned in the docstring).
This PR adds some simple code to check, during loading, if a weight is one of those removed weights. It then automatically retrieves the values of its still-existing "twin" instead.
What does this fix?
We currently cannot load h2oai/h2ogpt-oig-oasst1-falcon-40b with the unmodified server, since the transformer.word_embeddings.weight weight is equal to lm_head.weight and is automatically removed. The falcon code, however, still expects this weight to exist. I could have also added some extra checks to the model itself, though that would only be a workaround.
Before submitting

[ ] This PR fixes a typo or improves the docs (you can dismiss the other checks if that's the case).
[ ] Did you read the contributor guideline,
Pull Request section?
[ ] Was this discussed/approved via a Github issue or the forum? Please add a link
to it if that's the case.
[ ] Did you make sure to update the documentation with your changes? Here are the
documentation guidelines, and
here are tips on formatting docstrings.
[ ] Did you write any new necessary tests?

Who can review?
Anyone in the community is free to review the PR once the tests have passed. Feel free to tag
members/contributors who may be interested in your PR.

Hey thanks for the PR !.
Unfortunately that metadata is kept for hard debugging but it's missing crucial information, namely it doesn't recall the the tensor was a slice or not. And metadata will not necessarily be present.
I suggest a different fix:
diff --git a/server/text_generation_server/models/flash_rw.py b/server/text_generation_server/models/flash_rw.py
index 5f963bf..33079ac 100644
--- a/server/text_generation_server/models/flash_rw.py
+++ b/server/text_generation_server/models/flash_rw.py
@@ -48,7 +48,13 @@ class FlashRWSharded(FlashCausalLM):

         torch.distributed.barrier(group=self.process_group)
         filenames = weight_files(model_id, revision=revision, extension=".safetensors")
-        weights = Weights(filenames, device, dtype, process_group=self.process_group)
+        weights = Weights(
+            filenames,
+            device,
+            dtype,
+            process_group=self.process_group,
+            aliases={"transformer.word_embeddings.weight": ["lm_head.weight"]},
+        )

         config.quantize = quantize

Would that work ?

Without having tested the fix (don't have access to the GPU server during the weekends), this seems like it would also fix my problem.
I initially also thought about doing this. However, it is still only a fix for this specific model. The metadata may not be a trustworthy source for tensor aliases, but it may still be a valid fallback, no? It could also be improved by adding a namespacing prefix like alias-- to the key, to prevent conflicts.
Curious to hear what you think

However, it is still only a fix for this specific model.

Indeed, but the other one can lead to potentially catastrophic failure (loading the wrong weights) which is even worse imo.
Are you ok if I update this PR ? (If I can, otherwise I'll just create a new one with you as co-author).

Alright, fair point. Silently loading the wrong weights is definitely undesired.
Sure, update this PR!

I tested the new fix "on my machine" and it worked. A colleage used it then and it didn't work for him. The difference? In his version of model-00001-of-00018.safetensors, the transformer.word_embeddings.weight was there, but the lm_head.weight was gone.
Unless the conversion can be made to be consistent, this means we should either also alias the weights the other way around. Maybe the same as done in the current patch already, or automatically (two-way aliases by default).
I don't know why his safetensors conversion is different, I guess because the order of dictionary keys is not guaranteed to be consistent, which then affects safetensors.torch_remove_duplicate_names. Pretty sure that using its preferred_names argument to would fix this weight mapping issue, but it'd be a model-specific fix in a generic part of the code-base. Unless that can work, but it'd be nicer to keep it in flash_rw.py

Any update on this PR? I also encountered the issue of missing lm_head.weight when I try to load Falcon model with text-generation-inference.

Hi @lppllppl920 Thanks for the ping. I'm not sure why it wasn't merged.

Hi @lppllppl920 Thanks for the ping. I'm not sure why it wasn't merged.

Thank you!

The fix actually doesn't work: I discovered it while testing. Fix coming soon: https://github.com/huggingface/text-generation-inference/pull/762/files#diff-2111bae5f77d998a3fe39888906b3c7be122313241ed6b69b0b0baf5abb735bbL57


Crash while debugging writing to large array (AccessViolationException)

General
With .net Core 2.1 (and I think the same is happening with 2.2 preview 3) when I try to write to a large array with a debugger attached the program crashes with a AccessViolcationException
Sample Program:
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var bigArray = new double[40000, 20000];
            for (int i = bigArray.GetLowerBound(0); i < bigArray.GetUpperBound(0); i++)
            {
                for (int j = bigArray.GetLowerBound(1); j < bigArray.GetUpperBound(1); j++)
                {
                    bigArray[i, j] = double.MinValue;
                }
            }

            Console.WriteLine($"Hello World! {bigArray[14,14]}");
        }
    }
}

I'm just creating a large 2D array and filling it with double.MinValue; (This is my minimum test case I'm doing more in my real app)
Just open this in Visual Studio, run with debugging and it'll crash while trying to write to (13421, 15456) this also happens if you do the same operation in a XUnit test even from outside of visual studio "dotnet test"
namespace XUnitTestProject1
{
    public class UnitTest1
    {
        [Fact]
        public void Test1()
        {
            var bigArray = new double[40000, 20000];
            for (int i = bigArray.GetLowerBound(0); i < bigArray.GetUpperBound(0); i++)
            {
                for (int j = bigArray.GetLowerBound(1); j < bigArray.GetUpperBound(1); j++)
                {
                    bigArray[i, j] = double.MinValue;
                }
            }
        }
    }
}

Interestingly the program works just fine if you compile it in release mode and run it from bin/Release directory via dotnet ./ConsoleApp1.dll so it's clearly something relating to the compiled debug version.

System.AccessViolationException
HResult=0x80004003
Message=Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

Tested against today's final release of .net core 2.2.0, confirmed still same behaviour.
To be specific the presented code crashes with an AccessViolationException if compiled without optimisations enabled.


is there a way to store github actions in S3

Trying to reduce nat gateway costs and the most traffic (after checking in cloudwatch) seems to be related to github. I know we sometimes have a large amount of logs in our runs and I'm suspecting that as an issue and was wondering if storing these in S3 is an option

What was the issue in the end?

@crohr still figuring it out, I thought the majority of the data bytes was pushing to github, but the majority is pulling from it so still trying to figure it out.


Custom Module Not Showing in Builder

Problem Description
After following these instructions in your developer docs:

https://www.elegantthemes.com/documentation/developers/divi-development-environment/
https://www.elegantthemes.com/documentation/developers/create-divi-extension/
https://www.elegantthemes.com/documentation/developers/divi-module/how-to-create-a-divi-builder-module/

...I was unable to get the custom module to show up in the builder (front end or back end).
Steps To Reproduce

Follow docs above to reproduce your exact sample extension / module.

Screenshots & Files
My Extension Files: my-extension.zip
It's activated: http://zsl.io/tdFWS1
yarn start has been run: http://zsl.io/PnaZbk
I've tried deactivating and reactivating it, etc. Nothing.
Module Gallery:

http://zsl.io/ChAmJJ
http://zsl.io/9hB1gI
http://zsl.io/Qd9zfj

I'm having a similar issue and wondering if there's a conflict between the Readme.md included in Create Divi Extension and the Documentation on elegantthemes here: https://www.elegantthemes.com/documentation/developers/how-to-create-a-divi-builder-module/
The Readme file in the Create Divi Extension seems to say that the file names should NOT be changed, while the elegant themes tutorial tells you that you should.


importing

I import it like this:
import {ThemeableBrowser} from 'ionic-native';
but then I can't use it by calling cordova.ThemeableBroweser... , it doesn't recognise it. What should I do? The readme did not mention how to actually import it.

It says: cannot find name 'cordova'... what's the matter here?

http://ionicframework.com/docs/native/themeable-browser/ which version of ionic-native do you use?


Fix files/commits of merged PRs

Fixes #2797. Instead of looking at the range <base>...<merge-commit>, look at the range <base>...<end-commit> for determining commits and file diffs.

Codecov Report

Merging #2937 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #2937   +/-   ##
=======================================
  Coverage   27.26%   27.26%
=======================================
  Files          89       89
  Lines       17640    17640
=======================================
  Hits         4809     4809
  Misses      12144    12144
  Partials      687      687

Impacted Files
Coverage Δ

modules/process/manager.go
69.56% <0%> (-4.35%)
:arrow_down:

modules/avatar/avatar.go
100% <0%> (+18.75%)
:arrow_up:

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 061f65f...8eefee0. Read the comment docs.

LGTM

Anyone to review it?
Would love to see this merged quickly as this a really inconvenient issue.

LGTM

Please send back port to v1.3


Remove the config items of GremlinServer to prevent user from unintentionally modified

https://github.com/hugegraph/hugegraph/pull/290


just tiny typo (grammar)

Signed-off-by: Hearen<EMAIL_ADDRESS>
Which issue(s) this PR fixes:
Fixes # just tiny typo (grammar)
What this PR does / why we need it:
Docs Changes: no
Release Note: no

@cosmo0920 Sorry for the inconvenience, just signed.

Please fix tests. test_filter_parser.rb checks error message.
In addition, don't open new PR for commit fix.
 Confused now, is there any guides as to exact steps for this?
At least we should have a CONTRIBUTING.MD, I suppose.

@repeatedly It seems it's still not passing the tests after updating the test_filter_parser.rb, is there anything I missed out? Sorry to ask this but I got confused now.

This will be merged when release v1.5.0. Error message change is not trivial fix for users.

Next release is 1.5.0 so merged.


#25: Support running on AWS Fargate.

Overview
Application hosting on AWS.
Type of change
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[x] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

Related tickets
Fixes #25
Changes

Added bundler config
Added buildspec for CodeDeploy
Added a health check
Updated Dockerfile to copy the entire application
Updated environment variables to be more rails like
Added additional host patterns

Notes
Currently running at https://development.nprd.classifyr.org/

@ptrikutam @T-Dnzt I'm not necessarily looking for a code review here, but I did want you to be aware of them before they are merged as there are some changes (such as environment variables) that could impact you.


Image filters

How can we add image filters (e.g. Style:Photo+Face:Face) to the query?
They were in the old version of the code
https://github.com/tristantao/py-bing-search/blob/master/py_bing_search/py_bing_search.py

You should be able to add the filters via the custom param (which I think you actually made the PR for :)
Thanks for the help, that's merged in now (In the process I changed the custom_params to be a hash).


Brazilian PEPs

This PR introduces the Brazilian dataset of Politically Exposed Persons (PEPs), officially published by the Brazilian government. The dataset encompasses approximately 150,000 individuals who have occupied positions in the Brazilian government over the past five years. This timeframe aligns with the legal definition of a PEP in Brazil.

very nice, thank you!
I made a couple of small tweaks - just caching the requests to make development a bit quicker, and changed to only add entities who are considered PEPs according to our our automated and possibly manual categorisation.
I see there's a column defined in the data dictionary as "_End date of the period in which the person is considered politically exposed
_" but it's always 5 years after the end date of the position, so I've just stuck to our logic. That means we'll keep people for 5 years after holding the position, or longer if we categorise them as national or intergovernmental PEPs.


vim split in open buffer errors

I'm trying to open up a list of the open buffers that I can subsequently open in a vsplit. The functionality exists in ctrl-p and I'd love to see it here.
I tried running
:call PickCommand(s:BufferListCommand(), "", ":vsplit")
but I get the following errors:
E120: Using  not in a script context: s:BufferListCommand
E116: Invalid arguments for function PickCommand

Hi @sfahlberg, and thanks for opening this issue!
I think #11 is a different approach to resolving this issue than what you brought up here. I opened up #12 to make BufferListCommand a public function, which means that you can create your own functions to extend pick.vim.
Could you try it out, and let us know what you think?

As discussed in #11, I opened #12 to allow further customization into pick.vim.
Since that has been merged, I'm closing this. Thanks for spearheading this!


ObjC method that returns AnyPromise is not treated as AnyPromise in Swift

We are porting our PromiseKit 1 based library to PromiseKit 2. Our library is entirely ObjC, and my goal is to allow consumption of the library in ObjC or swift. I've changed all of our methods to return AnyPromise instead of PMKPromise.
+ (AnyPromise*)fetch;

When I look at the generated swift header for our method I see this:
class func fetch() -> PMKPromise!

So when we try to call fetch from Swift, it's not very pretty:
let p = MHObject.fetch()

P is of type PMKPromise!, when I really wanted it to be of type AnyPromise. So I now have to write this instead:
let p = MHObject.fetch() as! AnyPromise

This breaks easy chaining because I have to as! all my promises. Is there a way to perfectly bridge ObjC AnyPromise into Swift AnyPromise?

AnyPromise is a type alias of PMKPromise. So you shouldn't need to cast. Do you have to?

Right. That's what I thought too, but swift is complaining. I'm on Xcode 6.4. Here is the swift code that works:
let p = MHObject.fetch() as! AnyPromise
p.then { obj -> Void in
    // do something
}

If I remove the as! like this:
let p = MHObject.fetch()
p.then { obj -> Void in
    // do something
}

I get the following error:
ViewController.swift:28:12: Cannot invoke 'then' with an argument list of type '((_) -> Void)'

2.1.1 PromiseKit as well.

I think this is just a Swift compile error. You must specialize obj. Look at the signature for then, it's generic.  Maybe then should just push AnyObject? from an AnyPromise.

let p = MHObject.fetch()
p.then { (obj: AnyObject?) -> Void in
    // do nothing
}

Doing the above I still get the error: Cannot invoke 'then' with an argument list of type '((AnyObject?) -> Void)'
Simply by as!ing to an AnyPromise, the code then works. So it seems like somehow the compiler doesn't think that PMKPromise and AnyPromise are quite the same thing. When I do the as! I get this warning:
Cast from 'PMKPromise!' to unrelated type 'AnyPromise' always fails

Can you provide a full header of one these?

I sent you an email with our project. Thanks for the help!

I appreciate the full test case, I'll make sure to figure out a fix for you!

OK, I understand what's the problem more or less.
It’s a module problem. Your library CoreHound imports PromiseKit, but the module system gets confused between the objc and Swift components and ends up only importing the ObjC side of PromiseKit. You can verify this by trying to complete off of p2: it provides completions for ObjC-ish functions (note that they have Void parameters).
This is quite a substantial problem and will require a good deal of work for me to fix it.
I tried initially to replace all instances of #import <PromiseKit/PromiseKit.h> in public headers in CoreHound and other pods with @class PMKPromiseand then moving the #import to the.m` files.
This worked, but then for some reason ViewController.swift still wouldn't compile as no function that returned PMKPromise had public access.
I'll have to give this some thought.
TL;DR: Any module that exposes an Objective-C interface that returns promises and which is then imported by Swift code will fail.

In fact, it imports almost all the Swift stuff, just not the AnyPromise part of the Swift stuff. Weird.

I'm still trying to solve this. Apologies for the delay.

No worries. Thanks for taking a look at it. Let me know if you need anything from me.

Have a solution. It’s deep module-foo. Dunno what specifically the problem was, but it is fixed.

@mxcl Mad work! Thanks. Will try this out this weekend.


node版本安装skia-canvas失败，求救

本地node版本是v18，安装报错如下：
npm ERR! ><EMAIL_ADDRESS>build
npm ERR! > cargo-cp-artifact -nc lib/v6/index.node -- cargo build --message-format=json-render-diagnostics --release
npm ERR! node-pre-gyp info it worked if it ends with ok
npm ERR! node-pre-gyp info using<EMAIL_ADDRESS>npm ERR! node-pre-gyp info using<EMAIL_ADDRESS>| darwin | x64
npm ERR! node-pre-gyp info check checked for "/Users/liuqingfang/Desktop/hudong/hudong/jiaoyou/code/cloudfunctions/blmp-leafer2/node_modules/skia-canvas/lib/v6/index.node" (not found)
npm ERR! node-pre-gyp http GET https://github.com/samizdatco/skia-canvas/releases/download/v1.0.2/darwin-x64-unknown.tar.gz
npm ERR! node-pre-gyp ERR! install request to https://github.com/samizdatco/skia-canvas/releases/download/v1.0.2/darwin-x64-unknown.tar.gz failed, reason: socket hang up
npm ERR! node-pre-gyp ERR! install error
npm ERR! node-pre-gyp ERR! stack FetchError: request to https://github.com/samizdatco/skia-canvas/releases/download/v1.0.2/darwin-x64-unknown.tar.gz failed, reason: socket hang up
npm ERR! node-pre-gyp ERR! stack     at ClientRequest.<anonymous> (/Users/liuqingfang/Desktop/hudong/hudong/jiaoyou/code/cloudfunctions/blmp-leafer2/node_modules/node-fetch/lib/index.js:1501:11)
npm ERR! node-pre-gyp ERR! stack     at ClientRequest.emit (node:events:514:28)
npm ERR! node-pre-gyp ERR! stack     at TLSSocket.socketOnEnd (node:_http_client:525:9)
npm ERR! node-pre-gyp ERR! stack     at TLSSocket.emit (node:events:526:35)
npm ERR! node-pre-gyp ERR! stack     at endReadableNT (node:internal/streams/readable:1359:12)
npm ERR! node-pre-gyp ERR! stack     at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
npm ERR! node-pre-gyp ERR! System Darwin 21.6.0
npm ERR! node-pre-gyp ERR! command "/usr/local/bin/node" "/Users/liuqingfang/Desktop/hudong/hudong/jiaoyou/code/cloudfunctions/blmp-leafer2/node_modules/.bin/node-pre-gyp" "install"
npm ERR! node-pre-gyp ERR! cwd /Users/liuqingfang/Desktop/hudong/hudong/jiaoyou/code/cloudfunctions/blmp-leafer2/node_modules/skia-canvas
npm ERR! node-pre-gyp ERR! node -v v18.17.1
npm ERR! node-pre-gyp ERR! node-pre-gyp -v v1.0.11
npm ERR! node-pre-gyp ERR! not ok
npm ERR! Error: could not find the `cargo` executable.
npm ERR!
npm ERR! You can find instructions for installing Rust and Cargo at:
npm ERR!
npm ERR!     https://www.rust-lang.org/tools/install
npm ERR!
npm ERR!
npm ERR! Did not copy "cdylib:skia-canvas"

没安装 cargo ?

这玩意要先编译，虽然我下1.0.2的skia-canvas是可以正常下


CFP: response substitution support in envoy

Cilium Feature Proposal
Is your proposed feature related to a problem?
Yes. If an application is not configured to support subpaths, it's common to rewrite
the response to include the subpath in any linked assets.
A common solution is to use nginx's sub_filter option.
This is how the Hubble UI pod works currently.
Describe the feature you'd like
I want to remove nginx when it's not needed and rely on envoy directly.
This isn't a requirement, but a nice-to-have.
(Optional) Describe your proposed solution
I wish I knew envoy enough to offer one. Good luck! :pray:

For the time being, it's likely we'll restrict support to the upstream gateway api. So, a first step would be defining an API for that upstream :-).
I'm sure @youngnick would be happy to give a few pointers.

So, from what I can see of the sub_filter options, it seems like this is a general search-and-replace across all content in the response? Envoy is generally not cool with modifying the response body, sadly. It's possible, but not easy.
If it's about rewriting paths in requests or headers though, that we can do with existing Gateway API constructs.

You are correct, it's a simple search and replace. If I recall correctly, envoy exposes some Lua scripting that may be of use towards this goal.


(WIP) CSS variables

Changes the bqplot CSS to use Jupyter Lab environment CSS variables. -cc @jasongrout @ellisonbg
Also adds a theme attribute to the Figure so that the user can switch themes manually. Current themes are gg and classic.
In the light jupyter lab theme, this is what gg and classic look like:

In the dark theme:

Perhaps for now. However, it seems that CSS variables are well-supported now, so we could also just make widgets use actual CSS variables instead of postfix for the classic notebook. Then widget libraries could standardize on css variables.

note: --jp-ui-inverse-font-color is not polyfilled in labvariables.

I have updated the PR to make it work in the classic notebook, and defaulted to the gg theme instead of classic.

A few marks generate text with styling that isn't currently affected by the theme. This could potentially be a good place to do that? For example, scatter plot labels currently aren't visible in the dark theme.

@SylvainCorlay this is rebased and ready to be looked at.
@kaiayoung scatter plot labels are now theme-sensitive. Any other such improvements (I haven't looked at Graph for example) are welcome in future PRs!

:shipit:


grants

Get-HostedConnectionFilterPolicy -Identity Default

@JustineNicole2020 Please indicate which document you are referring to and what changes you expect in that document. Thanks

same as #2876 , closing.


Pixiv Members ID??

Sorry. I'm fairly new to this kind of stuff lol. I was wondering, how exactly do you find and copy an Artist "Member ID" ? I'm trying to download an entire batch of artwork from a specific artists profile.

 I already figure it out after a few more attempts messing around with the program.


Put the ca file location in the Certified::CA_FILE constant.

Add a VERSION constant while we're at it.

2 reasons: If I want to use the ca file with a different lib, it's easy if
I can grab its location from a constant. Also if I want to inspect the
file, debug an issue with the certificates or just simply know where it is,
it is much easier if that info is available.
For instance when I installed the gem, it didn't work because the path to
the file was relative. I had to waste a bit of time to figure out what was
the issue but If I could have just inspected the constant it would have
been much easier.
Cheers,
Darrick
On Mon, Feb 13, 2012 at 6:34 AM, Stevie Graham <
<EMAIL_ADDRESS>
wrote:

what is the reason for putting this in a constant?

Reply to this email directly or view it on GitHub:
https://github.com/stevegraham/certified/pull/2#issuecomment-3938148


Split POVM and DUAL classes

Closes #2

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Timothée Dao seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

Hey @mrossinek , I think this PR is in good enough shape to be merged now.
There are some points to improve, for instance how the DUAL classes  and the POVMPostProcessor currently interact is not super clean. Also how the user can 'optimize' the dual frame as part of the post-processing could be cleaner...
But I think it is good enough for this PR, especially as the main goals of this PR (namely splitting POVM and DUAL classes) are achieved imo. We can tackle the points mentioned above in a follow-up PR (otherwise this one will get really too big).


QPID-8469: [Broker-J][Message Store] The message is already cleaned when the delete listener is called

Hi Olivier,
Thanks for submitting this pull request.
Though, an invocation of message listener immediately after message removal looks like the right thing to do, could you please expand a bit more on the reasons behind this change?  Could you please add a description to the JIRA?
Kind Regards,
Alex

Thanks Alex,
I added a description in the JIRA ticket.
To make it short, we want to use the delete listener to implement the Claim-Check pattern.
Olivier

If I'm not mistaken, this fix has been merged in master, should we close this PR ?

Hi Olivier,
You are right. The changes have been committed. Please close the PR.
Kind Regards,
Alex
On Fri, 16 Oct 2020 at 10:36, Olivier VERMEULEN<EMAIL_ADDRESS>wrote:

If I'm not mistaken, this fix has been merged in master, should we close
this PR ?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/apache/qpid-broker-j/pull/60#issuecomment-709939584,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AEVFGESTUWTXHMEIWIEHDZ3SLAHYNANCNFSM4RYHKKDA
.


Update NR client

Update newrelic-client-go to v0.39.0

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


RpmSlice.java:42-46: Add integration test for rpm...

The puzzle 259-71347a14 from #259 has to be resolved:
https://github.com/artipie/rpm-adapter/blob/a92d64bb5a3aa2a5e4aea2e3e7c438bf94615d9a/src/main/java/com/artipie/rpm/http/RpmSlice.java#L42-L46
The puzzle was created by @olenagerasimova on 17-Jun-20.
Estimate: 30 minutes,  role: DEV.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

@g4s8/z, @olenagerasimova/z please, pay attention to this issue

@0crat assign me

@0crat assign me (here)

@olenagerasimova The job #273 assigned to @olenagerasimova/z, here is why; the budget is 30 minutes, see §4; please, read §8 and §9; if the task is not clear, read this and this; there will be no monetary reward for this job

There is an unrecoverable failure on my side. Please, submit it here:
PID: 4@592e6706-44da-4634-a6e2-8ab630bff16f, thread: PQ-CT2E6TK9B
com.jcabi.xml.StrictXML[124] java.lang.IllegalArgumentException: 2 error(s) in XML document: -1:-1: cvc-pattern-valid: Value 'gh:Week 26' is not facet-valid with respect to pattern '[a-z]{2}:[A-Z0-9a-z.\-#/]+' for type 'milestoneID'.;-1:-1: cvc-complex-type.2.2: Element 'successor' must have no element [children], and the value must be valid.

0.53.15: CID: ccbd70e0-cc31-428a-9284-ff4fca0d4a7f, Type: "Job milestoned"

The puzzle 259-71347a14 has disappeared from the source code, that's why I closed this issue.

@0pdd the puzzle #290 is still not solved.

Job was finished in 25 hours, bonus for fast delivery is possible (see §36)

@0pdd the only puzzle #290 is solved here.


Back-end down

Can't access ally.guide or any of the API links. Receiving the following error.

@nawazkhan updated it!

Do we know what happened? Would be great to just document it in case it happens again.

@nawazkhan are you able to push your changes for this and close it in your commit message, thank you!

Error from Heroku.

@nawazkhan are you able to push your changes for this and close it in your commit message, thank you!

⬆ ⬆ ⬆
Last merge was from 10 days ago.

So I noticed that in PR #95 that there was a new addition to the contributor guide. Looks like Auth0 now requires a couple more environmental variables for local setup. We don't have any set up in Heroku.
SERVER_PORT=6060
CLIENT_ORIGIN_URL=http://localhost:4040
AUTH0_AUDIENCE=your_Auth0_identifier_value
AUTH0_DOMAIN=your_Auth0_domain

Is that causing an issue?
cc: @manishapriya94 @teakopp

Was also missing a build pack

@JamesMGreene is it alright to delete this public/index.js line?


How to specify Roles OR Permissions needed to authorize an API?

Sorry, I couldn't find a way to specify role(s) or permission(s) needed to authorize an API. In OAuth world this may be scope(s), but how could we support similar authorizations with a specific Authentication Type. For eg. Basic Auth?

In progress as part of #1829

Released in v3.1.0


Slots don't converge for object-wise decomposition

Hey! First of all, thank you for having the code available! I am using your SA-MESH variant of slot attention for a slightly different problem, where the training signal that is backpropagated is not the reconstruction error (neither reg_loss), but the summed log probability of the true latent variables in a posterior distribution with proposed parameters. In this case, even though slots are sparse, I cannot make them converge for object-centric representations. Do you have any insights about the generality of SA-MESH when it comes to different optimization signals? Thank you in advance

If I understand correctly your aim is to directly supervise the slots? That is what we do in the first experiment of the paper. Are you using a permutation invariant loss (e.g., Hungarian algorithm)?

Thanks for your reply! Exactly, the main difference is that I am not allowing some permutation in my inferred object ordering. This is due to the fact that I am using SA-MESH to learn proposals for the posterior distribution of latent variables in a probabilistic program, hence I need to specify for which object (i.e. property of object) I am proposing a distribution for... (I hope I gave you a clear view!) - what is happening is that the system tends to converge for a local minimum where it doesn't see benefits on exclusively assigning slots to objects, and slots representations keep encoding information over all objects (in different regions, because some sparsity is still enforced due to the mesh algorithm)

This sounds like the issue might be with the permutation symmetry. Have you tried to initiate the slots with their respective object properties (or an affine transformation thereof)?

@davzha yeah, the problem was definitely with the permutation symmetry, just tried that out and works like a charm!
I'm closing the issue then, thank you!


Update the MeltanoData Guide to add all Postgres credentials in the meltano.yml

Migrated from GitLab: https://gitlab.com/meltano/meltano/-/issues/1369
Originally created by @iroussos on 2019-12-05 15:12:10

In the Configure PostgreSQL loader in meltano.yml section of the MeltanoData Guide, we set the host in the meltano.yml
We should also add the username/password/port/database for target-postgres in meltano.yml
--> That way if someone goes and changes those (let's say by mistake) the Pipelines will not be affected

View 2 previous comments from the original issue on GitLab


Utility classes for writing Java source code from a C++ process

This PR sets up a few tools for writing Java source files from the op generator (or any future generator of Java code written in C++).
They are handling most of the tricky cases known to be encountered when we'll generate the ops, including generics, wildcards, optional inner classes, etc. Note that they focus on simplicity rather than performance or memory optimitizations since they will only be used at compile time.
As stated in a previous PR, java_writer and source_writer are being kept separate since the later might be a good candidate to be move to the core::io layer if required some day.

Can one of the admins verify this patch?

@asimshankar , noticing that you have not been assigned this PR yet, in case you missed it... thanks

Just a little poke for taking a look at this PR please, thanks!

@asimshankar PTAL

Hi @asimshankar , sorry for the delay, I was very busy lately. So as you suggested, I split this PR into smaller ones, starting from the Java definitions. I also incorporated your previous suggestions related to them, please take a look when you'll have a minute, thanks!

@karllessard I am not sure you pushed the comment that addresses @asimshankar comments?

@drpngx , you are right, last comments are not pushed yet but I'll do it in the following days, thank you.

Ok, that's completed now.

FAIL: buildifier found errors and/or warnings in above BUILD files.
buildifier suggested the following changes:
112,113d111
<         "src/gen/cc/op_generator.h",
<         "src/gen/cc/op_generator.cc",
114a113,114
>         "src/gen/cc/op_generator.cc",
>         "src/gen/cc/op_generator.h",
Please fix manually or run buildifier <file> to auto-fix.

Done, sorry for that.

Jenkins, test this please.

Jenkins, test this please

Jenkins, test this please
(The previous test failure seems test infrastructure related)

FYI I think Jenkins might be stuck today
On Fri, Dec 29, 2017, 10:00 PM Asim Shankar<EMAIL_ADDRESS>wrote:

Jenkins, test this please
(The previous test failure seems test infrastructure related)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/tensorflow/tensorflow/pull/14094#issuecomment-354529507,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AT_SbXSyeu-_lvzQzzJNtqBj0amtZdNcks5tFdFmgaJpZM4QLRYK
.

The one test failure there is definitely unrelated, so I think this PR is ready to be merged.


Jupyter lab 0.34: ESC goes to Jupyterlab command mode instead of vim command mode

Hi,
I just upgraded Jupyter Lab itself to 0.34 and upgraded the plugin to version 0.9.0 (from github). I've noticed an issue though: when you're in vim insert mode (in a cell), pressing ESC brings you to Jupyter command mode instead of vim command mode.
Kind regards,
Lucas

Wow, you're fast. I'll have a closer look in a bit.

Do you have an example? I just gave it a go and it seems to work as before, but I'm probably missing something.
This is how it looks for me: https://i.imgur.com/IjWHS7g.mp4


Embedded frame redirects 307 https://github.com/orgs/giscus/discussions/1298 for new script tag from giscus.app

I copied the script from the giscus.app website.
When I embed the script, I can see this redirect.
307
location: https://github.com/orgs/giscus/discussions/1298

So, no comments appear but the discussion claims that I use the giscus repository. I wonder why because I do not use it.

Resulting script:
<script src="https://giscus.app/client.js"
        data-repo="niccokunzmann/open-web-calendar"
        data-repo-id="MDEwOlJlcG9zaXRvcnkxNzA4ODYyNzY="
        data-category="General"
        data-category-id="DIC_kwDOCi-EhM4CX3Pe"
        data-mapping="og:title"
        data-strict="0"
        data-reactions-enabled="1"
        data-emit-metadata="0"
        data-input-position="top"
        data-theme="noborder_light"
        data-lang="en"
        crossorigin="anonymous"
        async>
</script>

Context: #1348

If you have a look at the commit above, you can see that I removed the origins value.
It seems that this value was causing the redirect.
It works now:

So, redirecting when the origins value is the problem, is misleading. Would it be possible to display a page saying:

This URL is forbidden to comment on the repository niccokunzmann/open-web-calendar because the giscus.json file does not contain "..." in the 'origins' list.


Associate with existing account when login using external login provider

for now, we could create account only , if someone registered before using the same email he could not create an account with the same email again

Hi,
how do you fix it? Can cover this case via PR?
Currently, the email address must be unique. I will test it.
Thanks

I'm wondering user could create relation by provider the use the account name/email and password, if match create the relation between external account and exists account.
I'll create a pr asap (maybe the ui need to be updated, not good at ui...


PsuedoThreading

Hello,
In the channel that uses this bot, we had considered the Slack feature of threading comments.
To do so, you must leverage the properties of a thread of messages - Also called a tree.
For example (messages are numbered for use later, These numbers will be used in place of links),
1 Student 1: I have this question.
2 TA:  This is the response to your question
3 Student 1:  Please clarify this point
4 TA:  Here is clarification
5 Student 1: $Thread_close
When the $thread_close command is issued, the bot will be able to do the following
Take the link to last message in the thread
put the link on a stack
navigate to the link on top of the stack
If the new current message has a link, put it on a stack and recurse. Otherwise, pop the top off the stack and append the message to the transcript.
Using the example conversation above, the bot will construct the stack until it reaches a message with no link.
The stack will look like this (top) {1,2,3,4} (bottom)
the bot will then pop the top, follow link, and append the contents to the transcript until the stack is empty.
Thus the transcript becomes (contents omitted, messages referred to by number from original conversation)
1
2
3
4
This allows for each individual offshoot of a thread to be closed independently. In the context of a tree, this means a leaf node can either spawn a child (a reply to a message in a thread) or decide to stay a leaf (close the thread). Because the action of any leaf is independent of any other leaf, every thread can be closed and have its path from root->the aforementioned leaf node.
For another example - Consider Students 1,2,3 and the TA named "TA". They may have a conversation like so
1: I have a question
2:  <Link to 1's question> That reminds me of my question
3:  <Link to 1's question> This reminds me of a different question.
TA: <link to 1's last message> Answer to your question
TA: <link to 2's last message> Answer to that question
TA: <Link to 3's last message> Answer to another question
1: $Thread_close <link to the TA's answer to their question>
2: $Thread_Close <link to TA's answer to their question>
3: <Link to TA's answer to their question> Please clarify on your point.
TA: <Link to 3's last message> Here is clarification
3: $Thread_close <link to TA's answer to their request for clarification>.
Thus a tree is created. In the tree, the links were replaced with edges from parent to child. To see the tree, please view the image here: https://i.imgur.com/zw1Opop.jpg
This is each individual transcript that individual users would see
1 -
1: I have a question
TA: <link to 1's last message> Answer to your question
1: $Thread_close <link to the TA's answer to their question>
2 -
1: I have a question
2:  <Link to 1's question> That reminds me of my question
TA: <link to 2's last message> Answer to that question
2: $Thread_Close <link to TA's answer to their question>
3 -
1: I have a question
3:  <Link to 1's question> This reminds me of a different question.
TA: <Link to 3's last message> Answer to another question
3: <Link to TA's answer to their question> Please clarify on your point.
TA: <Link to 3's last message> Here is clarification
3: $Thread_close <link to TA's answer to their request for clarification>.
I believe I have belabored my point by now. If you have any questions please place them in the comments.

This is an excellent suggestion, tho not necessarily trivial to implement, it does sound fun to work on tho

Should probably close as proper threads were added to Discord.


griefing check?

https://github.com/fomo-nouns/fomo-nouns/blob/28868f86ecdd3d6dd4db139fcae9964a912feed0/packages/contracts/contracts/NounSettlement.sol#L58

via https://github.com/z0r0z/soliditives/commit/df470c0594da6324b389cd45fd02012cb50a0fac


Password visibility button

there is not any password visibility on of off button. Can you please assign me this under gssoc ext level so that i could contribute on this issue

@Devanshu1603 This appears to be a duplicate of an existing issue. Before raising a new issue, please make sure to check the issue section to avoid duplicates.
Reference: Issue 27


Fix regression introduced by e245349c

Reference Issue

What does this implement/fix? Explain your changes.
mol.SetProp(k, v) fails for non-string values.
Any other comments?

Thanks for the contribution @cornett