Graphics: Check whether user updated GL instructions from external thread.

Maintainer merge checklist

[x] Title is descriptive/clear for inclusion in release notes.
[x] Applied a Component: xxx label.
[ ] Applied the api-deprecation or api-break label.
[x] Applied the release-highlight label to be highlighted in release notes.
[x] Added to the milestone version it was merged into.
[x] Unittests are included in PR.
[x] Properly documented, including versionadded, versionchanged as needed.

New users often don't realize that you cannot set graphics or change properties that then set graphics properties outside the main Kivy thread. But they notice something is wrong, but don't know why.
This adds a option that will error out of graphics are created or updated outside the main kivy thread. By default the option is ON, but it can be turned off in config.
In terms of performance loss, if the option is turned OFF, there's basically no additional cost. But if it's turned ON, it's slower, but only in the tens of microseconds per property, which I think is negligible and worth making Kivy more bullet proof and friendlier to new users.
Here is the performance testing code:
from timeit import timeit
from kivy.config import Config
from kivy.uix.widget import Widget
from kivy.graphics import Rectangle, Color, Line

widget = Widget()
with widget.canvas:
    color = Color()
    rect = Rectangle()
    line = Line()

number = 1_000_000
values = []
for val in ('0', '1'):
    Config.set('graphics', 'verify_gl_main_thread', val)
    values.append(sum(timeit(setup='from __main__ import color, rect, line', stmt='color.rgb = .1, .2, .3', number=number // 10) for _ in range(10)))
    values.append(sum(timeit(setup='from __main__ import color, rect, line', stmt='rect.pos = .1, .2', number=number // 10) for _ in range(10)))
    values.append(sum(timeit(setup='from __main__ import color, rect, line', stmt='line.points = [1, 2, 3, 4, 5, 6]', number=number // 10) for _ in range(10)))

for i in range(3):
    print(f'{values[i]:0.4f} -> {values[i + 3]:0.4f}: {(values[i + 3] - values[i]) / values[i] * 100:0.2f}%, {((values[i + 3] - values[i]) / number):0.2E} difference')

This prints:
0.2593 -> 0.3300: 27.24%, 7.07E-08 difference
0.0428 -> 0.0453: 5.75%, 2.46E-09 difference
0.1718 -> 0.2618: 52.41%, 9.00E-08 difference

The percent may seem large, but look at the actual increase, which is in microseconds.
I also ran it with master (where setting the config option does nothing), and it printed:
0.2397 -> 0.2262: -5.64%, -1.35E-08 difference
0.0447 -> 0.0471: 5.41%, 2.42E-09 difference
0.1762 -> 0.1735: -1.51%, -2.67E-09 difference

which shows that when the option is turned OFF (compare first number to the first number abover), it basically is the same.

This looks like a great idea, didn't test yet, but i believe the numbers you quoted should be fine, especially as it's possible to disable it when releasing your apps without any downside, as any issue of this kind should have been caught during development, code looks fine.

Looks like it required a 64 bit in to store the thread id that's why it originally failed on linux/osx.
Unit tests, testing both enabling and disabling the config options and verifying it raises/doesn't raise a exception is included in the PR.

I reviewed the last commit and found python uses unsigned long ( https://github.com/python/cpython/blob/master/Modules/_threadmodule.c#L1208 64-bits on 64-bit systems) for the datatype in question.  Under the hood it seems to make the value in a platform-dependent way.  I'm happy to see automerge.  I imagine software projects growing as big wikis, like wikipedia.

Thanks for the info about unsigned long, I updated the code to use it.


[#16] Remove Ducalis client version

Fully rewrite ducalis
No need policial anymore
Do not load files from GitHub
Remove client version as no one need it
Fix #28 by using default Ducalis config
No more CLI needed
No need console commentator, rubocop is good as well
Using own diff parser (+ tests)

@ignat-z thanks :) will there be a new release with all those fixes?

@mensfeld sure, 0.9.0


Opening Modal prevents proper resizing of layout

Describe the bug
When the keyboard is open, launching a Modal (from either the react-native or react-native-modal package) results in the keyboard closing but without correctly adjusting the layout size.
Code snippet
import { useState } from 'react';
import { Button,  FlatList,  StyleSheet, Text, TextInput, View } from 'react-native';
import { KeyboardAwareScrollView, KeyboardProvider } from 'react-native-keyboard-controller';
import Modal from 'react-native-modal';

const data = Array.from(Array(50).keys());

export default function App() {
  const [modalVisible, setModalVisible] = useState(false);

  const onPress = () => {
    // Partial workaround: uncomment me and set Modal coverScreen to false
    // KeyboardController.dismiss();
    setModalVisible(true);
  };

  return (
    <KeyboardProvider>

      <Modal isVisible={modalVisible} coverScreen={true}>
        <View style={{flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: 'black'}}>
          <Text style={{color: 'white'}}>Modal content here</Text>

          <Button title='Close modal' onPress={() => setModalVisible(false)} />
        </View>
      </Modal>

      <KeyboardAwareScrollView contentContainerStyle={styles.container} keyboardShouldPersistTaps={"always"}>

        <View style={{flex: 1}} />

        <Button title="Open modal"  onPress={onPress}/>

        <FlatList scrollEnabled={false} data={data} style={{height: 500}} renderItem={({index}) => <Text style={{textAlign: 'center'}}>{index}</Text>}/>

        <TextInput placeholder='text input' style={{backgroundColor: 'white', padding: 10}} />

        <View style={{flex: 1}} />

      </KeyboardAwareScrollView>
    </KeyboardProvider>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: 'white',
    alignItems: 'center',
    justifyContent: 'center',
    padding: 50,
  },
});

Repo for reproducing
https://github.com/krystianhub/RN-Modal-Issue - Expo Managed workflow; requires compiled app with expo-dev-client.
I can provide the apk if needed. Alternatively, to build it locally yourself:
eas build --profile development --platform android --local

To Reproduce
Steps to reproduce the behavior:

Tap on text input element
Keyboard is open
Tap on open modal
Modal is visible, keyboard is closed
Tap on close modal
Layout is incorrectly shifted upwards

Expected behavior
Keyboard should close and properly resize layout back to its default height.
Video of expected behaviour (recorded with disabled Keyboard Provider, same as default RN behaviour):
https://github.com/kirillzyusko/react-native-keyboard-controller/assets/1358334/afb4ac15-82a9-4e3e-86eb-a5524d50a4ba
Screenshots
Video of the current behaviour:
https://github.com/kirillzyusko/react-native-keyboard-controller/assets/1358334/ca572fdd-72f9-406d-88cd-cc3070a3a1e6
Smartphone (please complete the following information):

Desktop OS: Fedora Linux 39
Device: Xiaomi Mi 10T Pro 5G
OS: Android 13
RN version: 0.73.5
RN architecture: fabric
JS engine: Hermes
Library version: 1.11.3

Additional context
I discovered a partial solution by adjusting the "coverScreen" attribute to "false" within the Modal element and manually dismissing the keyboard when pressing the "Open Modal" button simultaneously. Nonetheless, when dealing with navigation and headers, the opacity of the Modal's background only extends to the parent view rather than the entire screen. Regrettably, this workaround doesn't fully meet my expectations.
Video of the workaround:
https://github.com/kirillzyusko/react-native-keyboard-controller/assets/1358334/bd90fd3d-aa04-44e7-ad99-e308e5c9f448

I also attempted to use the KeyboardAvoidingView component instead, but encountered the same issue. It appears that when the Modal is displayed (with coverScreen=true), the animation breaks, leaving layout in the same position as when keyboard is open.

Hi @krystianhub
Thank you for opening the issue ❤
Indeed this is kind of known issue. The problem is that as soon as modal appears it handles keyboard on its own way and prevents events propagation to the root view - as a result I'm not receiving events that keyboard is hidden and because of that you see a space which is equal to keyboard size (even if keyboard is already closed).
The fix should be implemented on a native side, but right now there is no way to get a window of modal in RN (see https://github.com/kirillzyusko/react-native-keyboard-controller/issues/369 for more details).
So as a workaround you have 2 choices:

do not use Modal from react-native (react-native-modal is also based on implementation from RN) - you can create your own custom modals using portals -> in this case everything will live under the same rootView and all keyboard events will be dispatched correctly;
close a keyboard before modal gets shown - we wrote such helper (located in keyboard.ts):

import {
  KeyboardController,
  KeyboardEvents,
} from "react-native-keyboard-controller";

let isClosed = true;

KeyboardEvents.addListener("keyboardDidHide", _ => {
  isClosed = true;
});
KeyboardEvents.addListener("keyboardDidShow", _ => {
  isClosed = false;
});

const utils = {
  waitToBeClosed: () =>
    new Promise(resolve => {
      if (isClosed) {
        resolve(undefined);
        return;
      }

      const subscription = KeyboardEvents.addListener("keyboardDidHide", _ => {
        resolve(undefined);
        subscription.remove();
      });
      KeyboardController.dismiss();
    }),
};

export default utils;

and the before showing a modal we use it like:
import KeyboardUtils from './keyboard';
// ...
const onPress = async () => {
  await KeyboardUtils.waitToBeClosed();
  // Partial workaround: uncomment me and set Modal coverScreen to false
  // KeyboardController.dismiss();
  setModalVisible(true);
};

This is not the best solution, but gives quite pleasant UI and UX so... as a temporary solution we use it 🙂
As I said before - I'm planning to fix the integration with Modal windows, but it'll take some time, because I'll need to change a native code in Modal component from react-native (and it'll take time to review/merge my changes).

Thank you for your quick response.
I had been considering a similar solution to yours (an async helper that waits until the keyboard is fully hidden), but your implementation is better. After some initial testing, I'm pleased with the result!
Thanks!


How to Add NESBOX into a Google Site?

I am able to add .swf flash games into my website, (Google my username for my website) but I cannot add NESBOX files for the life of me. The closest I have gotten is that I took a .swf of a NESBOX emulator from another website and now it just loads "Click here to load your own ROM...". I want to just be able to add a simple .swf file and have Galaga or something like that run instantly like many websites do. Thank you for your help and I await your response!

try using weebly

Try running the code like this

So can you run a rom with it by clicking it.

Doesn't work well.


Implement Caching

Using CloudFlare?

Would be great to add a description of the todo...

added the cloudflare setup here:
https://theblog.page
i think we can close this one as we already track it in the more general CDN setup issue #29


Users tab

We have a CSS style class icon-button and I added some code to it to accept FontIcon as graphic and style it on mouse over etc.
I created classes for easier construction and styling of icon buttons:
FxIconUtils.newIconButton as a shortcut for the standard things a button should do and if it gets more complicated there is also a builder FxIconButtonBuilder if additional things are needed like disabling the button on condition etc.
FxLayouts.newIconPane gives option for horizontal / vertical icon button bar with default insets etc.
The new icon buttons could be useful for the landing page as well in PR #1749


redis: upstream client draining and temp host connection limit and cl…

…eanup
Signed-off-by: Mitch Sukalski<EMAIL_ADDRESS>For an explanation of how to fill out the fields, please see the relevant section
in PULL_REQUESTS.md
Description:
Upstream connection draining has been implemented so cluster topology changes do not cause unnecessary errors for in-flight redis requests. A new connection pool setting, upstream_drain_poll_interval (default 100ms), has been created to control the polling interval to check if draining connections are still active once they've been put aside to drain. Another connection pool setting, max_upstream_unknown_connections (default 100), controls how many connections a worker thread will open to upstream servers that it learns about from redis redirection errors. When hosts are discovered dynamically (e.g., RedisCluster), connections created via redirection are put aside to drain.
Risk Level: low
Testing: unit tests
Docs Changes: new connection pool settings autogenerated from redis_proxy.proto comments
Release Notes:
[Optional Fixes #Issue]
[Optional Deprecated:]

I'm going to add 2 more tests to get full coverage.

@HenryYYang for first pass. cc @envoyproxy/redis-dev

@HenryYYang this PR has gone stale, help!

tsan check failed due to some sort of network problem or crash -- I'll try again later with the latest upstream code merged...

@HenryYYang changes up and all CI checks passed...

LGTM

@mattklein123 I'll work on the changes, especially RedisCluster specific statistics, and get them up when I figure it out. Thanks!

@mattklein123 I'll work on the changes, especially RedisCluster specific statistics, and get them up when I figure it out. Thanks!

It should be pretty easy. Basically, you get passed the root stat scope in your cluster factory. Just make a new scope called something like cluster.<name>.redis_cluster. and then add stats to that.

I'll work on this today.

ipv6_tests failed due to download failure of six_archive python package; tsan failed due to 1 failing test -- //test/extensions/transport_sockets/tls:ssl_socket_test. I'll have to look into the tsan test failure, but this is not code that I've modified...

envoy-macos build failed with error: The agent: Hosted macOS 3 lost communication with the server. Verify the machine is running and has a healthy network connection.
//test/extensions/transport_sockets/tls:ssl_socket_test passes locally for me in 22 seconds...

coverage failed due to g++ internal compiler error compiling test/integration/protocol_integration_test.cc ... will try again with the same code since this all passed earlier yesterday

now clang-tidy is failing with
ERROR: An error occurred during the fetch of repository 'com_github_pallets_markupsafe':
java.io.IOException: Error downloading [https://github.com/pallets/markupsafe/archive/1.1.1.tar.gz] to /build/tmp/_bazel_bazel/b570b5ccd0454dc9af9f65ab1833764d/external/com_github_pallets_markupsafe/1.1.1.tar.gz: Read timed out
This CI environment is incredibly unstable, and now infuriating. I've spent most of 2 days trying to get a clean CI run with no code changes needed. It's just been a parade of build problems...

@mattklein123 it doesn't look like it's going to be easy to get a clean CI check. I'm not going to try again until you've had a chance for further review. It's a waste of my time, if I'm going to have to make more changes. Thanks!

I'll add a test of the new statistic to the MakeRequestToHostWithZeroMaxUnknownUpstreamConnectionLimit test in conn_pool_impl_test.cc

@msukalski can you also merge master? There are some CI flake fixes, etc. Thanks.
/wait

I've merged the latest upstream master. compile_time_options and tsan have both failed with build "connect timed out" errors pulling down external packages....sigh


Bulk map and vec initializers and accessors

Most of our host objects and host functions are "point-based", which makes some code needlessly expensive. Mainly when converting UDTs to and from maps and vecs, we make multiple temporaries and make multiple host function calls -- one per field -- when we could get away with some "bulk" operations fairly easily that pass more than one value in each direction. For example we could initialize a 4-element map with push, push, push, push, new_map_4 instead of push, new_map, push, map_push, push, map_push, push, map_push as we do today. These costs add up, and I think UDT code is one of our main cost amplifiers right now.
As with the multi-word experiments, we might find there's a saddlepoint between functions that take up-to-N arguments and a single function that takes a linear-memory slice pointing to a local array of rawvals (at least for inputs). For outputs, probably anything less than the saddlepoint is going to be no cheaper to bulk-extract than pointwise-extract, because of the overhead of setting up the array and bouncing arguments through it. My guess is that the saddlepoint is around 6 or 8 arguments, but it could be a ways off in either direction.

+1 most of the types I'm seeing are also small. Enums are often 2 elements, and if we could create the vec and pass 2 elems in a single call, that'd be great 👏🏻. Many structs are also small.

done in https://github.com/stellar/rs-soroban-env/pull/682

Actually there's still a bit to do here on tuples in common. Reopening for now.

As of #730 this is done.


[WIP] Add convenience wrapper to .add() when registering data

Noticed this as I was working on tests.  It is desirable to support both syntaxes:
// preferred method can receive context args
extensionRegistry.add('foo', function(args) {
  return $q.when([{ bar: 'baz' }]);
});

// but a simple registry is also handy
extensionRegistry.add('foo', { bar: 'baz' });

TODO:

[ ] tests

@spadgett this one has been coming along as well, simple change just to simplify some boilerplate.
I'll add tests when I get a free moment for them.


HTTPS and WIndows 64 .Net 4.5 still gives error...

Switch to 32 and it works.

Please try again with latest version of Vlc.DotNet and/or latest version of libvlc, and reopen if you still need help.


Self-Assign Cannot Be Enabled

Documentation states to enable self-assign for a server with ;sa enable.
However, this cannot be done on the public instance; it errors out. ;sa add ROLE works as is, but ;iam will not work, as the server has not enabled self-assign roles.
https://cdn.discordapp.com/attachments/621553564338356244/638481164239110144/unknown.png

As far as I can see, this only happens with this one setting. I have no idea why. I will have to look into it when I have time.


[Add] neso academy

Site URL
https://www.youtube.com/@nesoacademy
Description of the above provided site
Covers various topics related to field of computer science
► Engineering Lectures
► School Syllabus
► Competitive Exams
Category
Youtube
Sub Category
computer science
Checklist

[X] I have checked the existing issues
[X] I have read the Contributing Guidelines
[X] I am willing to work on this issue (optional)
[X] I am a GSSoC'23 contributor

You're assigned @S-ishita


IGNITE-17765 Sql. Introduce cache for parsed statements

https://issues.apache.org/jira/browse/IGNITE-17765

Implemented indirect cache for query plans: query string -> normalized query srting -> query plan
Fixed EXPLAIN to use cached plan
Tests added


AWS SQS Connector failed to get environment variable

I'm following the docs at https://docs.fission.io/docs/triggers/message-queue-trigger-kind-keda/aws-sqs/ . I've setup  kubectl secrets per instruction and ran fission mqt create  --name sqstest --function sqstest --mqtype=aws-sqs-queue --topic=fission-test --mqtkind=keda --metadata queueURL=https://sqs.us-west-2.amazonaws.com/xxxxx/fission-test --metadata awsRegion=us-west-2 --secret aws-secret to create the trigger. However, the connector pod won't start correctly:
kubectl get pods -A
...
default            sqstest-7d6fc4d78c-whq4w                                 0/1     CrashLoopBackOff   1          11s
...
kubectl logs sqstest-7d6fc4d78c-whq4w
{"level":"error","ts":1609595317.8034132,"caller":"app/main.go:201","msg":"failed to fetch aws config","error":"no aws configuration specified","stacktrace":"main.main\n\t/app/main.go:201\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:200"}
kubectl get pod sqstest-7568bc9cbd-c7gjd -o json
....    "spec": {         "containers": [             {                 "env": [                     {                         "name": "TOPIC",                         "value": "fission-test"                     },                     {                         "name": "HTTP_ENDPOINT",                         "value": "http://router.fission/fission-function/sqstest"                     },                     {                         "name": "ERROR_TOPIC"                     },                     {                         "name": "RESPONSE_TOPIC"                     },                     {                         "name": "SOURCE_NAME",                         "value": "sqstest"                     },                     {                         "name": "MAX_RETRIES",                         "value": "0"                     },                     {                         "name": "CONTENT_TYPE",                         "value": "application/json"                     },                     {                         "name": "AWS_REGION",                         "value": "us-west-2"                     },                     {                         "name": "QUEUE_URL",                         "value": "https://sqs.us-west-2.amazonaws.com/xxxxxxxxx/fission-test"                     },                     {                         "name": "AWS_ACCESS_KEY_ID",                         "value": "xxxxxxxxxxxxx"                     },                     {                         "name": "AWS_SECRET_ACCESS_KEY",                         "value": "xxxxxxxxxxxxx"                     }                 ],                 "image": "fission/keda-aws-sqs-http-connector:1", ....
From the pod env you can see the access keys are correctly set but the pod still crashes with the same error.

OK, seems the image on dockerhub is behind:
https://hub.docker.com/r/fission/keda-aws-sqs-http-connector/ is using commit before https://github.com/fission/keda-connectors/commit/79b8796b854f5699ed2ce71d1dfa8ba51a8175c9

OK, seems the image on dockerhub is behind:
https://hub.docker.com/r/fission/keda-aws-sqs-http-connector/ is using commit before https://github.com/fission/keda-connectors/commit/79b8796b854f5699ed2ce71d1dfa8ba51a8175c9

I edited the deployment for the sqs connector pod -- for me in the default ns pod deployment.apps/<trigger name> -- to use the old env var names and it runs now. Who knows if that will be reverted though, since fission somehow owns that deployment

https://github.com/jry-anchor/keda-connectors/commit/1b0c6cb624a1a5622bba95e39876aa05ff4b5833 would be an easy fix without waiting for a fission release if we could get someone to update the fission/keda-aws-sqs-http-connector:1 docker image tag in-place. I assume c68eb4e4d was the source of that build, so my commit is on top of it.

Please try latest version of keda-aws-sqs-http-connector https://github.com/fission/keda-connectors/pkgs/container/keda-aws-sqs-http-connector/279693262?tag=v0.16.


Question: labelling different activities

Can you label the icon with the activity name? For a library with a few sample activities for testing different things, it would be great to be able to label each one distinctly without generating a new icon for each.

Hey 👋
I'm not sure if that's feasible 🤔 Or at least, I don't see a way to achieve such effect with current plugin capabilities. It feels like the plugin works on a "different level", it plugs into the build process to generate icons for different build variants. In the case of multiple activities, they all will use a single build variant. The fact of using different build variants is crucial, as the core principal how this plugin works is it provides "more specific" resource than the default one. (given there is an icon defined as main/res/xxx.webp resource, the plugin generates new resource under debug/res/xxx.webp which then is picked by AGP).
In your case - it's not possible to rely on the described behaviour as all activities use the same build variant. To make your use case work - in generated code you'd have to either override AndroidManifest entries (I don't know if that's possible) or modify source files to point at a generated icon.
tl;dr I don't even know if that's feasible - it'd have to rely on a completely different mechanism than what this plugin currently does, so it either can't be done or can't be easily integrated with the plugin.
Just out of curiosity: how many activities do you have?

Only 3 - so easy to fix one off.  But more that as I'm not an icon designer, just being able to label them is way more useful for the test activities.
Thanks, thought it worth asking.


Performance Issue

Observed Issue
With relatively small circuit, I observed it took about 10 times longer than "default.qubit".
According to %prun profiling on Google Colab, the bottleneck is cuquantum.cutensornet.cutensornet.contraction_optimize.
Assumption
The main target of cuTensorNet is large circuit, so that for relatively small circuit its overhead is probably more significant than its speed-up.
Future Work
In default implementation batch_execute() calls execute() one by one serially.
If we could pass batch circuits to cuTensorNet at once, it might be run parallelly on GPU.

Yes, it's expected because path finding overhead can be large. It's best that you compute/cache the contraction path if you know in advance that a certain tensor network topology would be reused in your simulation (it can be nontrivial depending on your workload).

Thank you @leofang
I'm a still beginner, so that your experienced comment is pretty helpful.
I will try to investigate further.
What I am interested in is variational quantum algorithms (VQA) using parameterized quantum circuit (PQC), especially QCL[1].
(Ref: Works at my another repo.)
In the setting, parameters of the circuit are changed at every execution.
Do you think the cache strategy still works?
[1] https://arxiv.org/abs/1803.00745

I'd say so. For parametrized circuits (like this one that you had, with fixed arguments), the circuit topology is fixed. Then the same path can be reused even though you'd change the tensors inside the circuit.

if you provide more details we could try to give more accurate answer.

cutensornet include a pathfinder (to find an optimal path) that is configurable (meaning its time vary based on the configuration used)
execution which contract the network on GPU

depending on the number of tensors and the size of each tensor performance can be defined. if your tensors are not tiny then the overhead is very minimal even for small network/circuit
what would be beneficial is if you give use an idea about the size of your circuit ( # tensors) and the approximate size (extent) of the tensors, how many of the same circuit you would like to contract, what is the average contraction time of your example as well as which cutensornet version.

@haidarazzam
Thank you.
Tensor size is not clear yet.
I want to find "good" circuit and my work is still in early stage.
(Smaller circuit is more preferable for computation as long as it achieve enough result.)


Attach bidirectional data to template

I'm trying to implement a feature where I would need bidirectional data attached to the template.
As for now, the directive uses '@' for directiveData and I'm not sure how to use 'templateWithData' bodyOutputType. It awaits an expression which looks into the scope. I would have thought that some data could be passed to the template with that option.
Am I missing something?

I would be extremely cautious about binding bidirectional data to a toast template.  Toasts should not contain large amounts of business logic but should rather be informative in nature.
By design, the directive bodyType is designed to be a one way channel between the parent that pops the toast (with the corresponding data) and the customized directive that is compiled by directiveTemplate and subsequently binds the data.  There is no binding between the parent and the toast at that point so data could not be propagated up.
If you could put together a Plunker or a JSFiddle that illustrates what you are trying to do, it will be easier to identify if it is an abuse of the design, a bug, or a misunderstanding.

This is what I'm trying to do (simplified):
http://plnkr.co/edit/sXCOkvX1fpPFC5lv8puB

Whenever you are sharing state like this, it is usually best to use events (see my very quick, primitive example http://plnkr.co/edit/RLA0qBb4FGGgXu0lvvGn?p=preview), $watch on the parent, or $watch via a shared service.  Allowing the directive access to your parent would probably be inadvisable behavior (not to mention not possible by design).

reading the code a little bit more makes me realize the toaster-container isn't intended to be global. any design insights on this?

I did not write the toast-container and there have been several revisions since it was originally written that have continuously redefined it's functionality.  That said, I think that the correct approach is to not globally expose the inner workings of the toast-container but rather expose a concrete API that allows for clear and consistent behavior.  I am not advocating that the current API handles every case appropriately, but overall I think that it is fairly consistent.
I'm curious to here what you think would need to be added to give you the type of "global" behavior that you are working for.  In the interest of single toast instances having a defined scope, I think that a shared service appropriately handles the above situation that you described without the need to expose any additional scope.  This is partially why the directive bodyType was added...to give fine-grained control over a toast on a toast-by-toast instance without toast-container needing to get involved in the behavior of the template of the toast.
Perhaps this is becoming an x-y problem.  You really want behavior y, but you are asking about issue x in an effort to get y.

Since a toast's behavior is imo somewhat global, I was trying to use it as so. But in this implementation, toasts are meant to be used locally on the scopes you want to use them. I find it a little bit counter intuitive, but maybe it is just me.
I'm not asking for any added behavior, but just wondering why it was done like that. I used one of the solutions you provided earlier btw. Thanks for helping out

I understand where you're coming from :).  I think the approach as a whole has to been to provide only what is needed rather than providing everything that is available.
Happy to help.


more saturated conventional colorScheme

I think this looks better, the less saturated ones before are more suited for choropleth maps rather than map markers.

Merged into main


PR2 demos?

Hi Marc,
I looked at your rai stack(s) a few years back and was really impressed back then by a LGP demonstration where a PR2 was tasked to move a number of objects from one table to a different table area, carrying at most one object in each gripper.
I remember a number of visualization windows popped up for the different considered task skeletons.
I looked for the same code again today, but could not find it anymore.
Am I looking in the wrong place?

Hi Michael,
the test still runs. Ideally, the following "should work" (e.g. on a standard Ubuntu 22.04):
git clone https://github.com/MarcToussaint/rai.git
cd rai
git checkout marc
make -j1 installUbuntuAll
cd test/LGP/pickAndPlace
make
./x.exe
... but that's only a 'should work', as I decided to not robustly distribute rai itself, but only derivatives (like the robotic python package). Perhaps you need to checkout the 'marc' branch rather than 'master'
The test still uses the old LGPTree code, but became slower as the default hyperparameters changed over the years and are not optimized for this application anymore. Also, depending on concrete applications we started using other solver architectures (still based on KOMO and skeletons, but not on that specific LGPTree implementation), that are more robust and integrate sample-based methods....
Best,
Marc

Thank you for the direct reply! I just submitted a PR for rai to fix a number of issues I encountered looking into it.

became slower as the default hyperparameters changed over the years

Whether slow is an issue really depends on your expectations :angel: TAMP is allowed take time after all.

depending on concrete applications we started using other solver architectures (still based on KOMO and skeletons, but not on that specific LGPTree implementation), that are more robust and integrate sample-based methods.

References and/or implementations for that would be greatly appreciated!

Meanwhile I will close the issue as you addressed the question.


Adrians branch

Don't merge your own pull requests.
Don't merge from that branch. Copy and paste your changes and commit them to master as one commit.

USE PROPERLY TITLED COMMITS


Update kernel-dma-protection-for-thunderbolt.md

Added link to Intel Thunderbolt documentation in the intro

@AaDake Thanks for this too. The changes should appear later today.


Add support for Zig package manager

Need to create some sample projects to gain better knowledge of how the package manager works first.


delete old using tf2 tutorial

Delete old using tf2 tutorial as mentioned in https://github.com/ros2/ros2_documentation/issues/1776
Signed-off-by: Shyngyskhan Abilkassov<EMAIL_ADDRESS>

what do you think @clalancette ? can we remove this tutorial ? or is it worth it to move it somewhere ?

Nah, let's just remove it.  The new tutorials are much more comprehensive.

@Mergifyio backport galactic foxy


Type-hinting of user-facing functions

You probably expected this, but here it is:
Your docstrings are pretty exhaustive already (especially regarding expected types), but type hints are really usefull when using a type-aware IDE (pycharm for instance). This shouldn't be too complicated, as most of your inputs are either str, int or float.
A couple of pointers if you've never done this before:

for arguments that can be None, (samplerate=None) , use Optional[<yourtype>]
for arguments that are strings from a set of possible value, use Literal["value_a", "vlaue_b", "value_c"] avalaible in typing_extensions

You could just add these type-hints to functions that users are going to use i you feel that it's useless for your internal API.

I'm on the fence on type hints for project of this size/complexity and intended audience. Here is the rationale:
Type hints have well-known pros and cons. With types already specified in the docstrings, the major remaining pro is machine readability for users that happen to have a type-aware IDE. The major downside is decreased human readability of call signatures when calling help(). Most of our parameters can be one of several types: for numbers often Union[int, float, numpy.int, numpy.float, etc.]; for slab objects often any class with .data and .samplerate attributes. Same for return arguments.
This will also require a substantial rewrite, because we specify types in the docstrings. Having two sources of type info is problematic. We'd have to remove docstring types and then auto-generate them from the type hints, which again renders in a fashion that is hard to understand (if one is not familiar with it) and not beginner friendly.
I'd like to prioritise humans over machine readability here, because beginners are specifically among the target audience.
If both reviewers see this as a 'must' and a JOSS requirement, then we'll do it of course, but for the reasons above I'd rather not.

I agree that type annotation duplication (one in the signature, one in the docstring) is a real pain in the rear. I don't know if there's a docstring style (google, numpy, restructured, etc...) that plays nice with them.
regarding the JOSS submission, I was just suggesting that as an improvement, it's in no way necessary :)

Using Number or aliasing is a good idea. I do agree that it's generally good practice. I'll look into solving the docs issue and will consider moving the type hints into the call strings.


Change HtmlSplitterRoutingHandlerFactory config name

Current name fragmentsProviderHtmlSplitter is long and not very descriptive.
Describe the solution you'd like
Change the name to e.g. htmlToFragmentsSplitter.
Additional context
Please remember about updating configs in knotx-stack and knotx-example-project.

How about:
fragmentsProviderHtmlSplitter -> htmlFragmentsSupplier
singleFragmentSupplier -> singleFragmentSupplier
fragmentsAssemblerHandler -> fragmentsAssembler

Fixed.


Use the launch configuration name as the terminal name

Currently when running or debugging a launch target, the default terminal names are generic and don't reflect the launch target.
This makes it hard to know which terminal relates to which launch, particularly when you have 3 or more launches running.
Example
a Java launch target named Debug (Launch) - webapp results in a terminal named 2: Java Debug Console  .  I suggest that the terminal name becomes Debug (Launch) - webapp or alternatively support an override field in the launch.json to configure per launch target.

If a terminal is not busy, we are reusing it across launch configs. This feature request would require that the terminal's name changes over time.

An alternative to that would be to create a new terminal for the debug session, then re-use it.

The re-use seems to be keyed of the terminal name
for example, launching java it uses the name Java Debug Console and it does the following

looks for terminal that is not busy named 1: Java Debug Console
looks for terminal that is not busy named 2: Java Debug Console
and so on, finally creating one

It could be changed to use the launch config name instead of the generic name
for example, launching Debug (Launch) - webapp it could do the following

looks for terminal that is not busy named 1: Debug (Launch) - webapp
looks for terminal that is not busy named 2: Debug (Launch) - webapp
and so on, finally creating one

Hi @weinand
Sharing my experience to perhaps help push this request forward
this SUCKS:

Bumping this one - I have a similar experience to Amir currently.

I have a pretty similar use case. My terminals are all named after my launch config, but I use the same launch config for multiple apps. It's a mono repo that is not opened as a workspace  because I usually need to access files at the root.
My launch config asks the user to pick the app to debug, and uses the value in the launch command (all commands are similar). It would be nice if I could use that selected app value in the  terminal window.
Present state:
Debug app
Debug app(2)
Debug app(3)
Proposed state, where the part after Debug app - is a value that comes from my picker. I would provide the actual value to use:
Debug app - my-cool-api
Debug app - my-cool-service
Debug app - my-cool-web-backend
This would also be nice to get into the drop down list of running apps in both the debugger toolbar and debug console!

The terminal title actually comes from the debug adapter, so the Python or Java extensions have full control over this. I agree that a more specific name might be more useful, but you'll have to file this on the repos for those extensions.

Has anybody filed a feature-request for the Java extension?


[NEXT-23259] CMS Block Margins for multiple breakpoints

1. Why is this change necessary?
On most layouts, the margins / paddings between two cms elements should be based on breakpoints. Smaller devices, such as mobile devices have commonly smaller margins, that desktop devices or tablets. As such, we currently often need to specify the paddings in custom (S)CSS scripts. But especially for administrators, who aren't coders, they have no real option of differentiating between devices.
2. What does this change do, exactly?
It adds a checkbox on cms block layout configuration in the administration panel. When clicked, it will show input fields for all breakpoints (XS -> XL) where the user can input custom margins.
If the field is left empty, or the checkbox isn't set, the default behaviour will be used, so this is not a breaking change.
3. Describe each step to reproduce the issue or behaviour.

Create a new shopping experience
Add any cms block (it's irrelevant which)
Click on it
On the sidebar (right side) you will now seed beneath each margin field, a checkbox
Click the checkbox
Set some margins on any breakpoint
Assign the shopping experience to a category
Open that category in the storefront
Test on different resolutions how the margings change

4. Please link to the relevant issues (if any).
https://issues.shopware.com/issues/NEXT-23259
5. Checklist

[x] I have rebased my changes to remove merge conflicts
~- [ ] I have written tests and verified that they fail without my change~
[x] I have created a changelog file with all necessary information about my changes
~- [] I have written or adjusted the documentation according to my changes~
[x] This change has comments for package types, values, functions, and non-obvious lines of code
[x] I have read the contribution requirements and fulfil them.

 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.


install unit and functional tests with --enable-installed-tests

rkt has unit tests and functional tests that can be executed from the source tree with make check. But it is (at the moment) not possible to install the tests and have Linux distributions to package them in a -test package.
Debian (#1307) has Continuous Integration on http://ci.debian.net/ for testing new versions in package. Ubuntu has http://ci.ubuntu.com/. But as far as I understand, it requires the tests to be installed. So adding a --enable-installed-tests option would allow distributions to plug rkt upstream tests into their CI.
Another benefit is with reverse dependencies in autopkgtest: in Debian/Ubuntu, the rkt package will have a dependency on systemd. So when a new version of systemd is packaged (with Debian-specific patches), it could triggered the rkt tests in Debian's CI.
Would distributions be interested in that?
/cc @onlyjob @krnowak

Which tests would you like to install? Only functional ones I presume. But we probably can try installing unit tests too somehow.
Currently, to run functional tests, we are setting a boatload of ad-hoc environment variables. To have installed functional tests working we need to reduce them to zero. Or they may still exist, but if not provided, we need to fall back to some sane defaults + configure flags for functional tests.
Also, we probably need to bail out immediately, if we are not running as root.
Some changes in build system would be required:

it should build test binaries in build tree instead of some temporary directory

that's a simple change - add -c and -o <output file> to go test invocation

make check, make functional-check and make unit-check would simply run the built binaries.

I haven't investigated yet, whether go test adds some magic flags to invoked test binary or whether we can tell go test to run the built binary.

@krnowak I was thinking about only the functional tests.

@krnowak It prepend all the flags with test:

When invoking the test binary directly, each of the standard flag names must be prefixed with 'test.', as in -test.run=TestMyFunc or -test.v.

@onlyjob now that rkt is packaged in Debian, are you interested in getting the rkt package tested with https://ci.debian.net/doc/?

I'd love to but can't allocate time for it. Sponsorship could be helpful. Patches are welcome.


Create  sirius-school.txt

sirius-school.be

@siriusArnaud Please provide us with an URL of a page on the official website where an IT-related long-term (>1 year) course is offered by the school

@siriusArnaud You might miss my previous comment. Please reply.

Hello,
Sorry, I did not see your previous post. Is this condition mandatory to apply ? We actually offer three free 8 month formation in web this year. http://sirius-school.be/


array can have max size of PTRDIFF_MAX.

array can have max size of PTRDIFF_MAX.  (... https://wandbox.org/permlink/a3o3KP7vKOUGdEzF)
And fixes the constructor to have a more "sane" CAP capacity template value.
Automatically simplifies some pointer arithmetic.

By the way...
I think the design decision with the pointers f_ and l_ is not actually the best.
Better (for optimization) would be std::ptrdiff_t f_ and std::ptrdiff_t l_ (being offset indices from a_)
Then you can save the unnecessary offset calculations of a_[N], and use more constexpr values, such as ... simply calculation = N ... and in the very end just do a single dereference a_[calulation].
This will also massively improve the next and prev functions: just have an inline function into which you can pass N.
This will be even more massive improvement when called from the iterators. -> You could then safe the unnecessary dereferences here
https://github.com/user1095108/ca/blob/d60972ec9409b47edf060a0804eacbb00eaaecc8/arrayiterator.hpp#L58
by just coding the value of N as template argument into the iterator (or maybe a subclass of the iterator) and again just call something like next(N, n_) (being a static function)...   instead of calling a_->next()

Ah you also changed some stuff... (I was working off of a older version) -> conflict.

I tested indices vs. pointers extensively and pointers won. Indices are just another indirection, since they are always relative to some location (pointer), so I arrived at the conclusion to just use pointers. So, your ideas should be the basis for your very own circular array :) I really tested a number of designs. Otherwise, I'll manually type-in your changes. N could indeed be a template parameter, but it's not 100% necessary and the reason why I use a pointer to container is that I would otherwise need to copy 2 pointers f_ and a_, but as it is I'm copying just one. From the design viewpoint you're right, there's less coupling that way, but to hell with it :) Yeah, some say it's bad if the iterator references its container, but we're using a CA const pointer at least.

I'll just type your stuff in manually, lol.

Nice!
I was wandering about this line
https://github.com/user1095108/ca/blob/0c1dca8e0ec80d60e8bc251918743ff954ce97f8/array.hpp#L17
regarding (CAP <= PTRDIFF_MAX).
I wanted to catch you out, by finding code such as a_[N] - f_ which would then fail, since then N could be 1 too large (if N == PTRDIFF_MAX+1), but - haha! - I could not find such instances!
Hey! We always have the same thoughts.
I saw that fix just this moment!!!! Amazing!!
https://github.com/user1095108/ca/commit/8de5ee71c2cee67d9bd284d267562f3c36d13de5
Stop reading my mind! hahah!

Anyway, I think everything should be ok, I made some mistakes myself when putting in your fixes. Thankfully, we have the test case array.cpp. You'll see that nothing is straightforward when implementing a circular array :)

Still I think that maybe it's ok to change
(CAP <= PTRDIFF_MAX)
to
(CAP <  PTRDIFF_MAX)
since...
try and instantiate this and see what happens:
static ca::array<char, PTRDIFF_MAX> tmp;
So probably you do not need even need a check there.
Or else... just use (CAP <  PTRDIFF_MAX)

On these 2 lines ...
https://github.com/user1095108/ca/blob/8de5ee71c2cee67d9bd284d267562f3c36d13de5/arrayiterator.hpp#L27-L28
... clangd is suggesting
Missing 'typename' prior to dependent type name 'CA::difference_type'
Missing 'typename' prior to dependent type name 'CA::size_type'

This thing with clang is because, as of late, clang is behind g++. There were some changes made in c++20, so typename is not always needed, but clang is still catching up. In other areas too, like floats as non-type template parameters.

BTW, check out https://github.com/user1095108/dpp
I'm using it to make trades, maybe you can win/lose some money :)


misaligned stack access when using kstack

Minimal reproduction
> sudo bpftrace -ve 'profile:hz:1 { @[pid,kstack]=count(); }'
node count: 8
Attaching 1 probe...
load profile:hz:1, with BTF, with func_infos = -13: Permission denied
load profile:hz:1, with BTF = -13: Permission denied
load profile:hz:1, version: 6.11.10 = -13: Permission denied
load profile:hz:1, version: 6.11.10 = -13: Permission denied
load profile:hz:1, version: 6.11.3 = -13: Permission denied

Error log:
0: R1=ctx() R10=fp0
0: (bf) r7 = r1                       ; R1=ctx() R7_w=ctx()
1: (85) call bpf_get_current_pid_tgid#14      ; R0_w=scalar()
2: (77) r0 >>= 32                     ; R0_w=scalar(smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff))
3: (7b) *(u64 *)(r10 -44) = r0
misaligned stack access off 0+0+-44 size 8
processed 4 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0

ERROR: Error loading program: profile:hz:1

Using binaries from the releases page, this problem first appeared in 0.21.0. Version 0.20.4 is unaffected.
bpftrace --info output
System
  OS: Linux 6.11.10-300.fc41.x86_64 #1 SMP PREEMPT_DYNAMIC Sat Nov 23 00:51:20 UTC 2024
  Arch: x86_64

Build
  version: v0.21.2
  LLVM: 19.1.0
  unsafe probe: no
  bfd: yes
  liblldb (DWARF support): yes
  libsystemd (systemd notify support): no

Kernel helpers
  probe_read: yes
  probe_read_str: yes
  probe_read_user: yes
  probe_read_user_str: yes
  probe_read_kernel: yes
  probe_read_kernel_str: yes
  get_current_cgroup_id: yes
  send_signal: yes
  override_return: no
  get_boot_ns: yes
  dpath: yes
  skboutput: yes
  get_tai_ns: yes
  get_func_ip: yes
  jiffies64: yes
  for_each_map_elem: yes

Kernel features
  Instruction limit: 1000000
  Loop support: yes
  btf: yes
  module btf: yes
  map batch: yes
  uprobe refcount (depends on Build:bcc bpf_attach_uprobe refcount): yes

Map types
  hash: yes
  percpu hash: yes
  array: yes
  percpu array: yes
  stack_trace: yes
  perf_event_array: yes
  ringbuf: yes

Probe types
  kprobe: yes
  tracepoint: yes
  perf_event: yes
  kfunc: yes
  kprobe_multi: yes
  uprobe_multi: yes
  raw_tp_special: yes
  iter: yes

Interesting. I wasn't able to repro this on master with llvm 19.1.4. Are you able to try with a local build off master?

Ok, I was able to repro with the 0.21.2 release on a 6.11 and a 5.19 kernel.

Same issue BEGIN { @[1, "a"]=count(); }

@yump This is now fixed in version 0.21.3


Clean up tokens

### Tasks
- [ ] Move tokens to the rights file (check Miro board)
- [ ] Remove tokens that arn't used
- [ ] https://github.com/sl-design-system/components/issues/404

will be done in another way


Need to ignore local changes for development environment (vagrant)

We are not currently utilizing librarian, but I hope very much to do so.
We use vagrant to develop and test our modules. Essentially, the directory
containing our modules is in the same directory as the Vagrantfile.
vagrant provision applies the puppet manifests directly to the vagrant instance.
Ideally, we would like to have vagrant provision call librarian update.
Here is the main issue I am encountering - librarian overwrites the module directory.
I'll say that this is not an issue with librarian (librarian is working as
designed, just not as I would like).
Let's assume I need to add a new file to a module for testing.
	$ librarian-puppet update
	$ cd modules/ntp/
	$ touch newfile
	$ git add newfile
	$ git commit -m 'newfile test'
	1 file changed, 0 insertions(+), 0 deletions(-)
	create mode 100644 newfile
	$ cd ../..

I do my testing and run vagrant-provision which calls librarian-puppet. I see
that librarian is smart enough to detect my alterations to ntp and then overwrite it.
	$ librarian-puppet update --verbose
	[Librarian] Ruby Version: 1.8.7
	[Librarian] Ruby Platform: universal-darwin12.0
	[Librarian] Rubygems Version: 1.3.6
	[Librarian] Librarian Version: 0.0.24
	[Librarian] Librarian Adapter: puppet
	[Librarian] Project: /Users/jth21/devel/librarianfun/vagrants
	[Librarian] Specfile: Puppetfile
	[Librarian] Lockfile: Puppetfile.lock
	[Librarian] Git: /usr/local/bin/git
	[Librarian] Git Version: git version 1.8.2
	[Librarian] Git Environment Variables:
	[Librarian]   (empty)
	[Librarian] Pre-Cached Sources:
	[Librarian] Post-Cached Sources:
	[Librarian]   [:git, "git://github.com/puppetlabs/puppetlabs-ntp.git", {}]
	[Librarian]   [:forge, "http://forge.puppetlabs.com", {}]
	[Librarian] Scheduling ntp (>= 0) <git://github.com/puppetlabs/puppetlabs-ntp.git#master>
	[Librarian] Resolving ntp (>= 0) <git://github.com/puppetlabs/puppetlabs-ntp.git#master>
	[Librarian]   No known prior constraints
	[Librarian]   Checking manifests
	[Librarian] Running `/usr/local/bin/git reset --hard --quiet` in .tmp/librarian/cache/source/git/66076c171c9e7acc6a0341347cc866b2
	[Librarian]     --- No output
	[Librarian] Running `/usr/local/bin/git clean -x -d --force --force` in .tmp/librarian/cache/source/git/66076c171c9e7acc6a0341347cc866b2
	[Librarian]     --- No output
	[Librarian] Running `/usr/local/bin/git rev-parse HEAD --quiet` in .tmp/librarian/cache/source/git/66076c171c9e7acc6a0341347cc866b2
	[Librarian]     --> 99bae40f225db0dd052efbf1d4078a21f0333331
	[Librarian] Running `/usr/local/bin/git fetch origin --quiet` in .tmp/librarian/cache/source/git/66076c171c9e7acc6a0341347cc866b2
	[Librarian]     --- No output
	[Librarian] Running `/usr/local/bin/git fetch origin --quiet --tags` in .tmp/librarian/cache/source/git/66076c171c9e7acc6a0341347cc866b2
	[Librarian]     --- No output
	[Librarian] Running `/usr/local/bin/git remote` in .tmp/librarian/cache/source/git/66076c171c9e7acc6a0341347cc866b2
	[Librarian]     --> origin
	[Librarian] Running `/usr/local/bin/git branch -r` in .tmp/librarian/cache/source/git/66076c171c9e7acc6a0341347cc866b2
	[Librarian]     -->   origin/HEAD -> origin/master
	[Librarian]     -->   origin/contributing_guide
	[Librarian]     -->   origin/doh/nrosier/patch-1
	[Librarian]     -->   origin/master
	[Librarian]     -->   origin/readme_update
	[Librarian] Running `/usr/local/bin/git rev-parse origin/master^{commit} --quiet` in .tmp/librarian/cache/source/git/66076c171c9e7acc6a0341347cc866b2
	[Librarian]     --> 99bae40f225db0dd052efbf1d4078a21f0333331
	[Librarian] Running `/usr/local/bin/git rev-parse HEAD --quiet` in .tmp/librarian/cache/source/git/66076c171c9e7acc6a0341347cc866b2
	[Librarian]     --> 99bae40f225db0dd052efbf1d4078a21f0333331
	[Librarian] Running `/usr/local/bin/git rev-parse HEAD --quiet` in .tmp/librarian/cache/source/git/66076c171c9e7acc6a0341347cc866b2
	[Librarian]     --> 99bae40f225db0dd052efbf1d4078a21f0333331
	[Librarian]     Checking ntp/0.3.0 <git://github.com/puppetlabs/puppetlabs-ntp.git#master>
	[Librarian]       Scheduling puppetlabs/stdlib (>= 0.1.6) <http://forge.puppetlabs.com>
	[Librarian]       Resolving puppetlabs/stdlib (>= 0.1.6) <http://forge.puppetlabs.com>
	[Librarian]         No known prior constraints
	[Librarian]         Checking manifests
	[Librarian]           Checking puppetlabs/stdlib/3.2.0 <http://forge.puppetlabs.com>
	[Librarian]             Resolved puppetlabs/stdlib (>= 0.1.6) <http://forge.puppetlabs.com> at puppetlabs/stdlib/3.2.0 <http://forge.puppetlabs.com>
	[Librarian]         Resolved puppetlabs/stdlib (>= 0.1.6) <http://forge.puppetlabs.com>
	[Librarian]       Resolved ntp (>= 0) <git://github.com/puppetlabs/puppetlabs-ntp.git#master> at ntp/0.3.0 <git://github.com/puppetlabs/puppetlabs-ntp.git#master>
	[Librarian]   Resolved ntp (>= 0) <git://github.com/puppetlabs/puppetlabs-ntp.git#master>
	[Librarian] Bouncing Puppetfile.lock
	[Librarian] Pre-Cached Sources:
	[Librarian] Post-Cached Sources:
	[Librarian]   [:git, "git://github.com/puppetlabs/puppetlabs-ntp.git", {}]
	[Librarian]   [:forge, "http://forge.puppetlabs.com", {}]
	[Librarian] Installing ntp/0.3.0 <git://github.com/puppetlabs/puppetlabs-ntp.git#master>
	[Librarian] Running `/usr/local/bin/git reset --hard --quiet` in .tmp/librarian/cache/source/git/66076c171c9e7acc6a0341347cc866b2
	[Librarian]     --- No output
	[Librarian] Running `/usr/local/bin/git clean -x -d --force --force` in .tmp/librarian/cache/source/git/66076c171c9e7acc6a0341347cc866b2
	[Librarian]     --- No output
	[Librarian] Running `/usr/local/bin/git rev-parse HEAD --quiet` in .tmp/librarian/cache/source/git/66076c171c9e7acc6a0341347cc866b2
	[Librarian]     --> 99bae40f225db0dd052efbf1d4078a21f0333331
	[Librarian] Deleting modules/ntp
	[Librarian] Copying .tmp/librarian/cache/source/git/66076c171c9e7acc6a0341347cc866b2 to modules/ntp

If I'm running a puppet server, this is exactly the behavior I want. When I'm developing
the modules locally, it's obviously counter-productive.
I could work-around this by developing my modules in another location, commit and
push my code for a round trip each time through the git server. However, this is pretty
inefficient.
I'm looking for a solution to make this work. Ideally, we would have a command - it could
be a wrapper around librarian-puppet, or a new flag/login in librarian-puppet to handle
the following logic:

If any module has local updates, do not touch.
If a module (without local changes) has a newer version available, update it.

Of course, I am open to any additional suggestions.

The way it works, you should have a :path dependency and point it to the folder with the modified module, not using the modules folder


Different result for asyoutype and format

For number +4915539898001
asYouType returns +49<PHONE_NUMBER>1
Format International returns: +49 15539 898001
Should it be the same?

If you give me the step to reproduce this issue I can have a look.
EIther via the demo or via code.

At the demo page

Clear default country code in all fields
Copy the number and paste it into "as you type" and "format" phone fields
2a. The same result if you type the number one by one digit

Ok, this is confirmed

Thanks for the bug reports, the bugs has been fixed in the latest release.

@ua9msn Как ваще библиотека, норм? Или чего-то ещё нужно.


scripts: kconfig: fix partition size calculation

adding of 0x to decimal value breaks the logic
Fixes: https://github.com/zephyrproject-rtos/zephyr/issues/19877

Different fix: https://github.com/zephyrproject-rtos/zephyr/pull/19891

Closing this PR, as the fix should be along the lines of #19891


Remove trailing whitespaces from md files

 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.:x: indocomsoft sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

Please resolve conflict


Patch spawn for Python 'unix' compilers instead of link

Needs artifact test...

https://grpc-testing.appspot.com/view/Artifacts/job/gRPC_build_artifacts/1227/

Thanks for this PR!

Artifact run: https://grpc-testing.appspot.com/view/Artifacts/job/gRPC_build_artifacts/1238/

Manual inspection/import-smoke-test says the symbols are all still there on build 1239 for Windows 32/64-bit outside of an MSYS2 environment in vanilla PowerShell. Back to you, @kpayson64.

LGTM


localhost:3000

its not working in my system

Please fill out the issue template. There is no information here for us to be able to help you.


Show how to view changes to the SVN files in VS Code

If we turn off the connection to git repo (#85) it is much easier to track changes to the SVN repo (or repos) that people have checked out.
It would be good to include a screen shot of this as part of one of the demos.
It would be something like

But probably based on on the askYesNo example, so that we can include it after this step in the Contribution Workflow: https://contributor.r-project.org/r-dev-env/tutorials/contribution_workflow/#2-editing-source-code or perhaps as another mini help page "Viewing changes" with a note on how to open the accessible diff viewer (three dots menu/F7).

It seems that VS Code forgets about the SVN repo if you close and restart the workspace. However you can get the source control pane to recognise it again by running an SVN command that connects to the remotes repository, e.g.
svn update

to bring in the latest updates, or
svn diff -r BASE:HEAD .

if we just want to see what has changed since we checked out the repository. As this is a little involved, it is probably best to make a separate help page on viewing changes.

I had another look at this and found a setting which seems to fix the issue of SVN repos not appearing in the Source Control pane when you restart:
"svn.multipleFolders.enabled": true

Can you add this to the settings.json? Then people shouldn't need to run the commands in my last comment just to get VS code to detect the repo.

Adding to devcontainer.json file did the worked
"svn.multipleFolders.enabled": true

#88 fixes the issue of SVN repos being forgotten about when the codespace is restarted.
So now we can go back to the original issue in https://github.com/r-devel/r-dev-env/issues/86#issue-2079410901, i.e. add an example of viewing the changes to askYesNo.R in the contributor workflow example.

If we turn off the connection to git repo (#85) it is much easier to track changes to the SVN repo (or repos) that people have checked out.
It would be good to include a screen shot of this as part of one of the demos.
It would be something like

But probably based on on the askYesNo example, so that we can include it after this step in the Contribution Workflow: https://contributor.r-project.org/r-dev-env/tutorials/contribution_workflow/#2-editing-source-code or perhaps as another mini help page "Viewing changes" with a note on how to open the accessible diff viewer (three dots menu/F7).

I think we can just add this inside "Updating source code page"


feat: add Aider-based linting for edit_file (agentskills)

Based on Aider-inspired linting functionality(2220)
Done

added only required files to runtime in new "aider" folder (incl. readme and license files)
added unit tests for the Linter class itself; original code required several fixes to satisfy linter

Open
WIP thus not checked in yet is the actual agentskills.py changes for edit_file to use Linter.
@neubig @rbren would love to get some direction of expectations for the new functionality, thanks!

Closed in favor of https://github.com/OpenDevin/OpenDevin/pull/2489


Fix Travis CI

Currently, Travis CI is failing giving the output:
$ eval "$(chef shell-init bash)"
Traceback (most recent call last):
	3: from /usr/bin/chef:261:in `<main>'
	2: from /opt/chefdk/embedded/lib/ruby/2.5.0/rubygems/specification.rb:1055:in `find_by_name'
	1: from /opt/chefdk/embedded/lib/ruby/2.5.0/rubygems/dependency.rb:322:in `to_spec'
/opt/chefdk/embedded/lib/ruby/2.5.0/rubygems/dependency.rb:310:in `to_specs': Could not find 'chef-dk' (>= 0) among 37 total gem(s) (Gem::MissingSpecError)
Checked in 'GEM_PATH=/home/travis/.rvm/gems/ruby-2.4.1:/home/travis/.rvm/gems/ruby-2.4.1@global', execute `gem env` for more information
$ chef --version
Traceback (most recent call last):
	3: from /usr/bin/chef:261:in `<main>'
	2: from /opt/chefdk/embedded/lib/ruby/2.5.0/rubygems/specification.rb:1055:in `find_by_name'
	1: from /opt/chefdk/embedded/lib/ruby/2.5.0/rubygems/dependency.rb:322:in `to_spec'
/opt/chefdk/embedded/lib/ruby/2.5.0/rubygems/dependency.rb:310:in `to_specs': Could not find 'chef-dk' (>= 0) among 37 total gem(s) (Gem::MissingSpecError)
Checked in 'GEM_PATH=/home/travis/.rvm/gems/ruby-2.4.1:/home/travis/.rvm/gems/ruby-2.4.1@global', execute `gem env` for more information
The command "chef --version" failed and exited with 1 during .

It appears it was a problem upstream.


Cordova-iOS 5.0.0 no longer builds

cordova build ios --device --codeSignIdentity="iPhone Developer" --provisioningProfile="NAME" --developmentTeam="TEAMID"
after upgrading to cordova-ios 5.0.0, the following error occurs:
note: Using new build system
note: Planning build
note: Constructing build description
Build system information
error: "[app-name]" requires a provisioning profile with the Push Notifications feature. Select a provisioning profile for the "Debug" build configuration in the project editor. (in target '[app-name]')

Build system information
warning: The iOS deployment target is set to 4.3, but the range of supported deployment target versions for this platform is 8.0 to 12.1. (in target 'nanopb')

Build system information
warning: The iOS deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.1. (in target 'Protobuf')

i am using a provisioning profile which contains an entitlement and my project also has the aps-entitlement.
cordova-ios 4.5.5 build fine.

@joeldhenry did you solve this?
We‘re having the same issue on a CI server. Before we upgraded the push plugin and Cordova-iOS everything worked flawless.

We are having the same issue as well


Quantitative sentiment analysis

Small issue to flag here; in the training data I see the author has determined this to be neutral -
_Example 4:
News: “Estee Lauder Q2 adj. EPS $2.11; FactSet consensus $1.90.”
The statement about Estee Lauder and FactSet consensus is neutral, as it merely states the facts without indicating a positive or negative sentiment. Here, FinGPT accurately identifies the neutrality of the statement._
Quantitatively, this is an EPS beat by $0.21 which may be enough for the stock to reactive positively to the news. I'd suggest we count this as "positive sentiment" not "neutral sentiment". I know the LLM is going to struggle with numerical analysis but this is what we need to really drive the AI to the promised land.
We are entering very grey territory once the reported EPS is within a certain range of consensus. Understanding the standard deviation within consensus estimates would really help determine if something is within the boundary of "neutral" "positive" or "negative" but this is likely a too granular at this point.

thanks for your suggestions.
we will check it again.

感谢您的建议。
我们将再次检查。

作为经常和成熟能够稳定盈利交易者打交道的从业人员，程序是能够从市场成交数据上看出市场的情绪。因为市场的消息是滞后，且大多数是不真实的，所以直接用成交数据来训练模型才是出路。就像是扑克游戏一样，只根据对手每个回合下注比例和行为，就足够判断对方情绪和牌力了。
As a practitioner who regularly deals with mature, stable and profitable traders, the program is able to read market sentiment from market turnover data. Because market information is lagging and mostly untrue, training models directly on trading data is the way to go. Just like a poker game, it is enough to judge the opponent's mood and card power based on the proportion of bets and behavior of the opponent each turn.
我对国内交易市场的渠道是熟悉的，或许我们能够沟通出好的思路。
I am familiar with the channels of the domestic trading market, maybe we can communicate a good idea.


i got this type of error.please help me. how to resolve this type of problem?

**D:\nandha\Nandhakumar\my-app>ng serve
Your global Angular CLI version (1.2.1) is greater than your local
version (1.2.0). The local Angular CLI version is used.
To disable this warning use "ng set --global warnings.versionMismatch=false".
** NG Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200 **
Hash: cec0eeedf86433c6383f
Time: 12488ms
chunk    {0} polyfills.bundle.js, polyfills.bundle.js.map (polyfills) 174 kB {4} [initial] [rendered]
chunk    {1} main.bundle.js, main.bundle.js.map (main) 130 kB {3} [initial] [rendered]
chunk    {2} styles.bundle.js, styles.bundle.js.map (styles) 10.6 kB {4} [initial] [rendered]
chunk    {3} vendor.bundle.js, vendor.bundle.js.map (vendor) 2.79 MB [initial] [rendered]
chunk    {4} inline.bundle.js, inline.bundle.js.map (inline) 0 bytes [entry] [rendered]
ERROR in ./src/app/app.component.ts
Module not found: Error: Can't resolve './css/app.component.css' in 'D:\nandha\Nandhakumar\my-app\src\app'
@ ./src/app/app.component.ts 16:17-51
@ ./src/app/app.module.ts
@ ./src/main.ts
@ multi webpack-dev-server/client?http://localhost:4200 ./src/main.ts
ERROR in ./src/app/student/student-details.component.ts
Module not found: Error: Can't resolve './css/student-details.component.css' in 'D:\nandha\Nandhakumar\my-app\src\app\st
udent'
@ ./src/app/student/student-details.component.ts 44:17-63
@ ./src/app/app.module.ts
@ ./src/main.ts
@ multi webpack-dev-server/client?http://localhost:4200 ./src/main.ts
ERROR in ./src/app/student/student.selected.component.ts
Module not found: Error: Can't resolve './css/student-details.component.css' in 'D:\nandha\Nandhakumar\my-app\src\app\st
udent'
@ ./src/app/student/student.selected.component.ts 51:17-63
@ ./src/app/app.module.ts
@ ./src/main.ts
@ multi webpack-dev-server/client?http://localhost:4200 ./src/main.ts
ERROR in ./src/app/student/student-lists.component.ts
Module not found: Error: Can't resolve './css/student-lists.component.css' in 'D:\nandha\Nandhakumar\my-app\src\app\stud
ent'
@ ./src/app/student/student-lists.component.ts 43:17-61
@ ./src/app/app.module.ts
@ ./src/main.ts
@ multi webpack-dev-server/client?http://localhost:4200 ./src/main.ts
ERROR in ./src/app/student/student.display.component.ts
Module not found: Error: Can't resolve './css/student.display.component.css' in 'D:\nandha\Nandhakumar\my-app\src\app\st
udent'
@ ./src/app/student/student.display.component.ts 34:17-63
@ ./src/app/app.module.ts
@ ./src/main.ts
@ multi webpack-dev-server/client?http://localhost:4200 ./src/main.ts
webpack: Failed to compile.**
i am using below versions for my project:
@angular/cli: 1.2.0
node: 6.11.0
os: win32 x64
@angular/animations: 4.3.0
@angular/cli: 1.2.0
@angular/common: 4.3.0
@angular/compiler: 4.3.0
@angular/core: 4.3.0
@angular/forms: 4.3.0
@angular/http: 4.3.0
@angular/platform-browser: 4.3.0
@angular/platform-browser-dynamic: 4.3.0
@angular/router: 4.3.0
@angular/compiler-cli: 4.3.0
@angular/language-service: 4.3.0

I'm sorry, I'd like to help you but it's very hard because you didn't provide a repro. It's very important to provide a repro when opening an issue, without one I have no idea of what you're trying to do, what went wrong or pretty much anything else.
Please open a new issue with a reproduction I can follow.


fix: MenuItem overflow

Description
Sets the line-height of menu item from 17px to 19px so that letters such as "g" won't be truncated
Fixes #6548
Type of change

Bug fix (non-breaking change which fixes an issue)

How Has This Been Tested?
In windows OS, set the zoom level to 125% and check the Action selector items
Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes

Test coverage results :test_tube:
:green_circle: Total coverage has increased
// Code coverage diff between base branch:release and head branch: fix/menu-item-overflow

Status
File
% Stmts
% Branch
% Funcs
% Lines

:green_circle:
total
54.63 (0)
36.35 (0.01)
33.09 (0)
55.15 (0)

:green_circle:
app/client/src/utils/autocomplete/TernServer.ts
52.26 (0.22)
41.25 (0.83)
34.48 (0)
56.22 (0.26)

/ok-to-test sha=e83cf67

@aswathkk I still feel at looking at once that g and y is getting little truncate at extreme bottom.

@aswathkk DP is tested and working fine now.


"user: Current not implemented on darwin/386" when authenticating

Got the latest built version of deploy. Tried to run deploy:
○ → deploy
github.com username<EMAIL_ADDRESS>github.com password for<EMAIL_ADDRESS>(never stored):
user: Current not implemented on darwin/386
@paul-musgrave is getting the same error with v. 0.0.2 even though he has used 'deploy' successfully in the past.

@paul-musgrave mind trying the amd64 binary?

Sure. Yeah, the 0.0.3 amd64 binary seems to be working for me.

Cool. Probably no reason to actually post the i386 binary, think all recent macs are amd.


Why initialize value with its key?

It seems in your code dynamic_memory_cell.py,  value is initialized with its respect key. It is kind of rare and I am curious why doing this.
 def zero_state(self, batch_size, dtype):
        """
        We initialize the memory to the key values.
        """
        zero_state = tf.concat(1, [tf.expand_dims(key, 0) for key in self._keys])
        zero_state_batch = tf.tile(zero_state, tf.pack([batch_size, 1]))
        return zero_state_batch

Does this come from the paper? or for some specific purpose?

It's from the paper in Appendix A:

The initial values of the memory slots were initialized to the key values, which we found to help performance.

This conditions the memory on matching keys.


i18n(ko-KR): update islands.mdx

Description (required)

update islands.mdx
#9240

Related issues & labels (optional)

Closes #
Suggested label:

Lunaria Status Overview
🌕 This pull request will trigger status changes.

Learn more
By default, every PR changing files present in the Lunaria configuration's files property will be considered and trigger status changes accordingly.
You can change this by adding one of the keywords present in the ignoreKeywords property in your Lunaria configuration file in the PR's title (ignoring all files) or by including a tracker directive in the merged commit's description.

Tracked Files

File
Note

ko/concepts/islands.mdx
Localization changed, will be marked as complete.

Warnings reference

Icon
Description

🔄
The source for this localization has been updated since the creation of this pull request, make sure all changes in the source have been applied.


MongoDB take performance problem (outside of include)

TLDR:

MongoDB take performance degrades as more data is added to the collection (Prisma 4.5.0)
Reproduction at https://github.com/andrewicarlson/prisma-mongodb-linear-query
Might already be fixed in Prisma 4.11+

This was originally part of https://github.com/prisma/prisma/issues/13865, but turned out to be unrelated so I split it out into its own issue:

This is turning out to be a major problem. Including a many-to-one relationship in a paginated query takes exorbitantly long, scaling with the number of documents. For about 50k documents it takes 5-10 seconds. 100k takes 10-20 seconds. The Prisma call has a take key to limit the number of returned documents, but it doesn't matter if that's reduced to 1, it still takes an excessively long amount of time. This is a deal breaker for pagination in our product.

Originally posted by @peacechen in https://github.com/prisma/prisma/issues/13865#issuecomment-1295734414

This is breaking production deployments because the size of the data set causes 503 server timeouts. The production db has over 100k records, and Prisma is loading them all into memory on the API server then splicing the take amount. This is very inefficient for the db, the network, and the server.
I'm attempting to create a PR but I'm not familiar with the project architecture. Is the Mongo-specific query code in the prisma-engines repo? How should I develop locally to test the fix?

Originally posted by @peacechen in https://github.com/prisma/prisma/issues/13865#issuecomment-1296564713

Prisma is not an easy project to contribute to, but if you want to try the prisma-engines repository and its CI setup includes all the information you need.
Alternatively, please describe how you would solve the problem here - or even just help us out with another reproduction that is easy for us to run to see and understand the problem. (Or is the description in the original issue comment already enough?)

Originally posted by @janpio in https://github.com/prisma/prisma/issues/13865#issuecomment-1300558014

Below are simplified model definitions, the Prisma call, and the generated Mongo query.
Note that there’s no limit parameter even though take was passed to Prisma. If I insert { $limit: 1000 } into the pipeline the response is fast (less than a second). Without it, the query time increases linearly with the total number of records, eventually exceeding the 30s network timeout.
model Component {
  id                          String @id @default(auto()) @map("_id") @db.ObjectId
  alias                       String
  archived                    Boolean
  category                    String
  companyId                   String @db.ObjectId @map("company")
  created                     Int
  libraryId                   String @db.ObjectId @map("library")
  name                        String
  revision                    String?
  specs                       Spec[]
  status                      String?

  // Relations
  companyObj                  Company @relation(fields: [companyId], references: [id])
  libraryObj                  Library @relation(fields: [libraryId], references: [id])

  @@map("components")
}

type Spec {
  key                         String?
  value                       String
}

model Company {
  id                          String @id @default(auto()) @map("_id") @db.ObjectId
  archived                    Boolean
  created                     Int
  creatorId                   String? @db.ObjectId @map("creator")
  name                        String
  // Relations
  Components                  Component[]
  Libraries                   Library[]

  @@map("companies")
}

model Library {
  id                          String @id @default(auto()) @map("_id") @db.ObjectId
  archived                    Boolean
  companyId                   String @db.ObjectId @map("company")
  created                     Int
  name                        String
  type                        LibraryType?
  // Relations
  companyObj                  Company? @relation(fields: [companyId], references: [id])
  Components                  Component[]

  @@map("libraries")
}

enum LibraryType {
  GENERAL
  PERSONAL
}

The Prisma call:
const result = await prisma.component.findMany({
    cursor: undefined, // first page doesn't provide cursor
    orderBy: {created: 'asc'},
    skip: 0,  // excluding this doesn't make a difference
    take: 21,
    where: {
      libraryObj: { type: 'GENERAL' }
    }
  });

Generated query:
db.components.aggregate([
  {
    $match:{
      $expr:{
        $and:[
          {
            $eq:[
              "$_id",
              ObjectId("<some_id>"),
            ],
          },
        ],
      },
    },
  },
  {
    $lookup:{
      from:"components",
      let:{
        created:"$created",
      },
      pipeline:[
        {
          $lookup:{
            from:"libraries",
            let:{
              left_0:"$library",
            },
            pipeline:[
              {
                $match:{
                  $expr:{
                    $and:[
                      {
                        $eq:[
                          "$_id",
                          "$$left_0",
                        ],
                      },
                    ],
                  },
                },
              },
            ],
            as:"ComponentToLibrary",
          },
        },
        {
          $match:{
            $expr:{
              $and:[
                {
                  $and:[
                    {
                      $eq:[
                        {
                          $size:{
                            $filter:{
                              input:"$ComponentToLibrary",
                              as:"elem",
                              cond:{
                                $and:[
                                  {
                                    $eq:[
                                      "$$elem.type",
                                      "GENERAL",
                                    ],
                                  },
                                  {
                                    $or:[
                                      {
                                        $ne:[
                                          {
                                            $ifNull:[
                                              "$$elem.type",
                                              null,
                                            ],
                                          },
                                          null,
                                        ],
                                      },
                                      {
                                        $eq:[
                                          "$$elem.type",
                                          null,
                                        ],
                                      },
                                    ],
                                  },
                                ],
                              },
                            },
                          },
                        },
                        {
                          $size:{
                            $ifNull:[
                              "$ComponentToLibrary",
                              [
                              ],
                            ],
                          },
                        },
                      ],
                    },
                    {
                      $eq:[
                        {
                          $size:"$ComponentToLibrary",
                        },
                        1,
                      ],
                    },
                  ],
                },
                {
                  $and:[
                    {
                      $eq:[
                        "$archived",
                        false,
                      ],
                    },
                    {
                      $or:[
                        {
                          $ne:[
                            {
                              $ifNull:[
                                "$archived",
                                null,
                              ],
                            },
                            null,
                          ],
                        },
                        {
                          $eq:[
                            "$archived",
                            null,
                          ],
                        },
                      ],
                    },
                  ],
                },
              ],
            },
          },
        },
        {
          $match:{
            $expr:{
              $gte:[
                "$created",
                "$$created",
              ],
            },
          },
        },
        {
          $unwind:{
            path:"$ComponentToLibrary",
            preserveNullAndEmptyArrays:true,
          },
        },
        {
          $sort:{
            created:1,
          },
        },
        {
          $project:{
            _id:1,
            alias:1,
            archived:1,
            category:1,
            company:1,
            created:1,
            library:1,
            name:1,
            revision:1,
            "specs.key":1,
            "specs.value":1,
            status:1,
          },
        },
      ],
      as:"cursor_inner",
    },
  },
  {
    $unwind:"$cursor_inner",
  },
  {
    $replaceRoot:{
      newRoot:"$cursor_inner",
    },
  },
])

Originally posted by @peacechen in https://github.com/prisma/prisma/issues/13865#issuecomment-1301170341

@peacechen thanks for this! I expanded this into a full reproduction with comparisons between MongoDB and Postgres. Building on the schema and query you've posted above I found the following:

Note that the times I found were significantly faster (4sec vs 30sec) but using a local MongoDB database

Originally posted by @andrewicarlson in https://github.com/prisma/prisma/issues/13865#issuecomment-1302961256

Thanks @andrewicarlson for the detailed analysis 🎉
We're using Mongo Atlas so there's more of a network penalty. Our models are more complex than the simplified example. There are more relationships to other collections not included. Glad that you're able to repro the linear relationship with the number of records.

Originally posted by @peacechen in https://github.com/prisma/prisma/issues/13865#issuecomment-1302964042

We're using Mongo Atlas so there's more of a network penalty. Our models are more complex than the simplified example. There are more relationships to other collections not included. Glad that you're able to repro the linear relationship with the number of records.

This makes perfect sense to me. I didn't expect to reproduce the 30s durations for all the reasons you mentioned above. The linear trend line is the key here imo.

Originally posted by @andrewicarlson in https://github.com/prisma/prisma/issues/13865#issuecomment-1302965821

It's been 4 months and this bug is becoming a blocker for us. I found a suspect flag ignore_take in the Mongo driver, but I don't know the code well enough and am not set up to debug it.
https://github.com/prisma/prisma-engines/blob/55eef363a3b2e17691b1f98ed28da8b387f3bdb8/query-engine/core/src/interpreter/query_interpreters/inmemory_record_processor.rs#L21
impl InMemoryRecordProcessor {
    /// Creates a new processor from the given query args.
    /// The original args will be modified to prevent db level processing.
    pub fn new_from_query_args(args: &mut QueryArguments) -> Self {
        let processor = Self { args: args.clone() };

        args.distinct = None;
        args.ignore_take = true;
        args.ignore_skip = true;

        processor
    }

Those flags cause the take() and skip() methods to ignore the input.
https://github.com/prisma/prisma-engines/blob/56e441b6c40b30dd871fabeb5f18d7a88424e346/query-engine/connectors/mongodb-query-connector/src/query_builder/read_query_builder.rs#L162
        Ok(MongoReadQueryBuilder {
            ...
            skip: skip(args.skip.map(|i| i as u64), args.ignore_skip),
            limit: take(args.take, args.ignore_take),

What's the rationale for in-memory processing of skip & take instead having Mongo do that? If that's needed for advanced corner cases, would an experimental flag to avoid it be considered? The performance is terrible for customers, and it's remedied by the limit arg.
@janpio
I've considered doing a raw query but it's complicated by requirements such as sorting based on input arguments, etc.

Originally posted by @peacechen in https://github.com/prisma/prisma/issues/13865#issuecomment-1471273353

The pagination performance in newer versions of Prisma (4.11+) appears to avoid in-memory pagination for our use cases. I'd like to learn more about the cases that trigger in-memory pagination. These comments in the code are helpful but hard to fully understand
https://github.com/prisma/prisma-engines/blob/56e441b6c40b30dd871fabeb5f18d7a88424e346/query-engine/connectors/mongodb-query-connector/src/query_builder/read_query_builder.rs#L281

/// Pipeline query with a cursor. Requires special building to form a query that first
/// pins a cursor and then builds cursor conditions based on that cursor document
/// and the orderings that the query defined.
/// The stages have the form:
/// ```text
/// testModel.aggregate([
///     { $match: { <filter finding exactly one document (cursor doc)> }},
///     { $lookup: { <if present, join that are required for orderBy relations> }}
///     { ... more joins if necessary ... }
///     {
///         $lookup: <"self join" testModel and execute non-cursor query with cursor filter here.>
///     }
/// ])
/// ```
/// Expressed in words, this query first makes the cursor document (that defines all values
/// to make cursor comparators work) available for the inner pipeline to build the filters.
/// The inner pipeline is basically what an non-cursor query would look like with added cursor
/// conditions. The inner join stage is refered to as a self-join here because it joins the cursor document
/// to it's collection again to pull in all documents for filtering, but technically it doesn't
/// actually join anything.
///
/// Todo concrete example

Originally posted by @peacechen in https://github.com/prisma/prisma/issues/13865#issuecomment-1522454422

But rereading this issue here now, and your comments @peacechen, am I correct in my understanding that your problem is not even about that use case but was more general, and that is has been improved or even fixed in Prisma 4.11+? If so, I would like to either hide your comments here as outdated and/or move the remaining open questions to a new issue. Does that make sense to you?

Originally posted by @janpio in https://github.com/prisma/prisma/issues/13865#issuecomment-1652186975

@janpio I can't say with certainty that the underlying issue was fixed in 4.11, only that the take is preserved for our use case with the Mongo driver. I tried to dig into it but don't have the expertise or time to fully debug it. Hiding my comments would make sense since the OP is ItsArnob.

Originally posted by @peacechen in https://github.com/prisma/prisma/issues/13865#issuecomment-1652231553

I added a TLDR at the beginning of the issue, can you please check if that is a fair summary @peacechen? We still want to reproduce this again with 4.5.0 and then confirm it is indeed properly fixed in newer Prisma versions before we close this issue. Thanks.


variables for output folder name

would  be great to use variables to name the output folder like %Y%m%d%H%M%S etc
Also, if possible at all, to add within the the same field a subfolder path (in the output folder set in settings) like:
/grids/%Y%m%d%H%M%S
would help a lot organise with other outputs of the auto1111 suite
thanks

ftr the Swarm version of this has this built in as eg grid-[date]-[time] to have it auto-update to current date-time, supporting any of  [date], [time], [year], [month], [day], [hour], [minute], [second
so it'd indeed make sense to add to the auto version here too

Got it. Though no one that I know uses it. But will look into it. Best of I can do all my prep and eval's in one place (comfyui). Thanks

if you already use comfy for things, you should definitely be using Swarm -- it's a wrapper around comfy that adds powertools like grids and a lot more

I did not know that. How could I have missed it. Eager to look at it thanks


Clarify relationship between messaging, faas, and RPC

I want to clarify the relationship between messaging, RPC, and FaaS which is confusing to me right now. Let me give an example, based on my understanding of the current spec, and let me know if this aligns with expectations. This is an example of lambda + sqs, something I'm working on now and is sufficiently complicated that hopefully other cases are simpler.
SQS - an HTTP-based RPC API for publishing and receiving messages
Lambda - a FaaS that can be integrated with SQS. Lambda runtime polls for messages using SQS's RPC API, and when a message comes in, it runs a function with the received batch of messages
SQS Queue - NiceQueue
Lambda function - process_function
So I can invision many spans. These are all for the same request so up to the producer spans is all in the same trace
Request - Request span for the "trace", with current span lasts until end of production
Message1 - Message 1
Message2 - Message 2
Producer1 - Producer Span for Message 1
Producer2 - Producer Span for Message 2
APIPublish1 - Client span using SQS API to send Message1
APIPublish2 - Client span using SQS API to send Message2
PollMessages - Internal, infinite? span that corresponds to the lambda runtime process itself
APIReceive - Client span using SQS API to poll for messages and receive Message 1 and 2
FaaSInitialize - Span encompassing lambda function initialization and invocation. May have cold start
FaaSInvoke - Span encompassing lambda function invocation by runtime
FaasFunction - Span encmpassing lambda function execution in user's app
Receive - Consumer span encompassing the recived batch
Process1 - Processing span for Message1
Process2 - Processing span for Message2
Trace 1
|--------------------------OrderService.ProcessOrders-------------------------|
 |NiceQueue send|                                    |NiceQueue send|
                     |SQS.SendMessage|                               |SQS.SendMessage|

Trace 2
|-------------------------pollmessages------------------------------------------------------------------------------------------|
|APIReceive||APIReceive||APIReceive||APIReceive||APIReceive||APIReceive||APIReceive|
                                                                                |-----FaaSInitialize-----------------|
                                                                                |---FaasInvoke--------------|
                                                                                |---FaasFunction------------|
                                                                                |--Receive--------------|
                                                                                |Process1||Process2|

Phew lots of spans. So does it look like this?

id
name
kind
duration
parent
link
semantic types
owner

Request
OrderService.ProcessOrders
SERVER
50ms
none
none
rpc,http
user

Producer1
NiceQueue send
PRODUCER
0
Request
none
messaging
user

ApiPublish1
SQS.SendMessage
CLIENT
20ms
Producer1
none
rpc,http
user

Producer2
NiceQueue send
PRODUCER
0
Request
none
messaging
user

ApiPublish2
SQS.SendMessage
CLIENT
20ms
Producer2
none
rpc, http
user

PollMessages
pollmessages
INTERNAL
infinity
none
none
none
infra

APIReceive
SQS.ReceiveMessage
CLIENT
30ms
PollMessages
none
rpc, http
infra

FaaSInitialize
Lambda::Initialize
INTERNAL
500ms
none
none
none
infra

FaaSInvoke
Lambda::Invoke
INTERNAL
300ms
FaasInitialize
none
none
infra

FaaSFunction
process_function
INTERNAL
300ms
FaaSInvoke
none
faas
user

Receive
NiceQueue receive
CONSUMER
250ms
FaaSFunction
none
messaging
user

Process1
NiceQueue process
CONSUMER
100ms
Receive
Producer1
messaging
user

Process2
NiceQueue process
CONSUMER
100ms
Receive
Producer2
messaging
user

My currently open questions

This is an ideal case, but especially when using auto instrumentation, it may not be possible to have Process1 and Process2 - Lambda presents the entire batch to the user. Should Receive also have links to Producer1 and Producer2? Should Receive be a process span instead of a receive span?

How to connect the API calls and the messaging spans. Completely separate like I listed? It means there are mysterious 0 duration producer spans and APIPublish are child or PRODUCER. Or combine e.g., Producer1 and ApiPublish1? Would the name be NiceQueue.send but we still include rpc.service == SQS, rpc.method == SendMessage to not lose that information? Is such a span's kind producer or client?

Are FaaSInvoke and Receive separate or should be combined? In reality, if the runtime is a cloud provider, there may not be control and FaasInvoke is automatically created.

APIReceive is a CLIENT span so I wouldn't expect it to be a parent of the rest - is it basically an orphan span? Anyways, while I may be able to model it as a parent of something if I was implementing all this myself, it wouldn't be for lambda = SQS.

Appreciate any guidance :)

Hey hey,
Trying to get this issue to resolution, I will start by answering the original message, based on what we currently have (OTEP 220 ):

it may not be possible to have Process1 and Process2 - Lambda presents the entire batch to the user.

Process spans are work in progress, and discussing whether batch OR individual spans are needed is something we will discuss soon. See #657

Should Receive be a process span instead of a receive span?

Under the current model, no. We still separate Receive and Process Spans.

How to connect the API calls and the messaging spans. Completely separate like I listed? It means there are mysterious 0 duration producer spans and APIPublish are child or PRODUCER.

There's an ongoing discussion on this item, see #674

Are FaaSInvoke and Receive separate or should be combined? In reality, if the runtime is a cloud provider, there may not be control and FaasInvoke is automatically created.

Yes, they are separate spans. The fact FaaSInvoke calls Receive is an implementation detail (or so it looks to me).

APIReceive is a CLIENT span so I wouldn't expect it to be a parent of the rest - is it basically an orphan span?

As this part is only about polling + invoking the FaaS when needed, i'd argue it's not related to Messaging, and it's more related to FaaS (where it can be considered a parent, either directly or via link). Will create an issue for that, if that makes sense.

About other comments, I do feel there are a few details specific to SQS, e.g.

@iNikem pointed out that my SQS instrumentation is fragile because we need to assign two spans to one handleRequest method. We need to decide whether this is a bug or a feature :) If FaaS span and message span are separate, then this is inevitable when an instrumented method has both meanings.

I'd love to get somebody to update the SQS instrumentation in Java as a prototype for this and other details.

@arminru @Oberon00 any opinion?

Ping @Oberon00 @arminru

@carlosalberto @Oberon00 @arminru We in the messaging workgroup think that the problems expressed in this issue are addressed by the recent changes in messaging semantic conventions.
If there are no reservations from your side, we will close this issue.


RangeTool overrides xlim setting

Hi there.
Observation:
When using "xlim" together with "rangetool = True", the "xlim" values are ignored and the rangetool overrides w 75%-100% default x-range.
Issue:
Depending on the use case and / or the data shape on y-axis (especially in the absence of y-axis autoscale #101), this leads to unintuitive bahaviour and awkward looking initial plots.
Proposal:
Carry the xlim values forward to "__initialize_rangetool(..., xlim)" in plot.py and use this to determine initial range in
start_index = int(0.75 * len(source["__x__values"]))
p.x_range = Range1d(source["__x__values"][start_index], source["__x__values"][-1]) .
Any thoughts highly appreciated.

Hi @andreasf-ki,
I attach a bug label to this issue. Thanks for reporting, I hope that we can rapidly fix the bug,
best Patrik


Why does it default to "tcp" once it doesn't comply with string "udp" (in ignore case mode)?

https://github.com/GoogleContainerTools/jib/blob/20ba40a7e04f504cb827377e84542de04187f912/jib-build-plan/src/main/java/com/google/cloud/tools/jib/api/buildplan/Port.java#L58

Hi @slavino, this is more like a choice. It was an implementation detail to be explicit with the default protocol.


⚠ Bofrost.at has degraded performance

In 09c537c, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 2457 ms

Resolved: Bofrost.at performance has improved in 9f13a2f.