Warning: Cannot find Vue plugin (@vitejs/plugin-vue or unplugin-vue). Please make sure to add it before using Vue Macros

After upgrading unplugin-vue-macros from 1.7.3  to 2.5.1, a warning shows up when I run the vite project.
pnpm.cmd run serve

08:43:00 [vite] warning: Cannot find Vue plugin (@vitejs/plugin-vue or unplugin-vue). Please make sure to add it before using Vue Macros.
  Plugin: unplugin-vue-short-vmodel

  VITE v4.4.9  ready in 3079 ms

  ➜  Local:   http://localhost:8848/
  ➜  Network: http://<IP_ADDRESS>:8848/
  ➜  press h to show help

// vite.config.ts
import vue from "@vitejs/plugin-vue";

VueMacros({
  plugins: {
    vue: vue(),
    // jsx、tsx语法支持
    vueJsx: VueJsx(),
  },
}),

There is a @vitejs/plugin-vue plugin, but vue-macros didn't dected it

Could you please provide a reproduction repo?

I tested on stackblitz but the waning message didn't show up. So I made a simple project to reproduce, see attachment below.
I'm using pnpm.
vue-macros-#504-reproduce.zip

Still cannot reproduce. Try to pnpm upgrade or upload your lockfile in the repo.

Update @vitejs/plugin-vue up to 4.3.4 solve the issue.


create_prediction result is None

I have 512x512 greyscale images I want to annotate using brush masks by humans and automatically segment later on using a UNet ML backend.
Versions:
label-studio: 1.4
label-studio-sdk: 0.0.4
label-studio-converter: 0.0.36
I use the Python SDK and want to create image predictions similar to this example: https://github.com/heartexlabs/label-studio-ml-backend/blob/feature/example-image-segmentation/label_studio_ml/examples/interactive_segmentation/interactive_segmentation.py
Although my images are greyscale, I assume the mask will also be RGBA as in the example.
This example code should generate a ~50% random mask for the Mitochondria class over the image, but it generates a buggy prediction instead:
import numpy as np
import label_studio_converter.brush as brush
from label_studio_sdk import Client

LABEL_STUDIO_URL = 'http://localhost:8080'
LABEL_STUDIO_API_KEY = '92263ad5544e90d0c730aa088187994ba4cc3626'
LABEL = 'Mitochondria'

ls = Client(url=LABEL_STUDIO_URL, api_key=LABEL_STUDIO_API_KEY)
ls.check_connection()

project = ls.start_project(
    title=LABEL,
    label_config=f"""
    <View>
    <Image name="image" value="$image" zoom="true"/>
    <BrushLabels name="tag" toName="image">
        <Label value="{LABEL}" background="#8ff0a4"/>
    </BrushLabels>
    </View>
    """
)

ids = project.import_tasks([
    {'image': f'http://localhost:7894/data_{i:04}.png'} for i in range(64)
])

result_mask = np.random.randint(low=0, high=256, size=(512, 512))
result_mask[result_mask > 100] = 255
result_mask = result_mask.astype(np.uint8)
# convert mask to RGBA image
import PIL
got_image = PIL.Image.fromarray(result_mask)
rgbimg = PIL.Image.new("RGBA", got_image.size)
rgbimg.paste(got_image)

datas = rgbimg.getdata()
# make pixels transparent
newData = []
for item in datas:
    if item[0] == 0 and item[1] == 0 and item[2] == 0:
        newData.append((0, 0, 0, 0))
    else:
        newData.append(item)
rgbimg.putdata(newData)
# get pixels from image
pix = np.array(rgbimg)
# rgbimg.save("test.png")
# encode to rle
result_mask = brush.encode_rle(pix.flatten())
result_mask

project.create_prediction(task_id=ids[0], model_version='123', result = {
    "original_width": 512,
    "original_height": 512,
    "image_rotation": 0,
    "from_name": "tag",
    "to_name": "image",
    "type": "brushlabels",
    'value': {
        "format": "rle",
        "rle": result_mask,
        "brushlabels": [LABEL]
    }
})

The response from create_prediction shows None for the result:
{'id': 238,
 'model_version': '123',
 'created_ago': '0\xa0minutes',
 'result': None,
 'score': 0.0,
 'cluster': None,
 'neighbors': None,
 'mislabeling': 0.0,
 'created_at': '2021-12-10T12:12:11.375195Z',
 'updated_at': '2021-12-10T12:12:11.375247Z',
 'task': 641}

In the Label Studio UI, the prediction is created for the task, but  result is also null when looking at the task source code. The page for the task itself does not load and does not show other annotations, only the single buggy prediction.
There are no error messages in the label-studio log to further debug this problem.
Is this maybe not the correct way to generate an image segmentation prediction?

I solved it by looking again at interactive_segmentation.py and the function brush.image2annotation. The result object is not a dict, but a list of dicts for image segmentation. This is wrongly documented at https://labelstud.io/tags/brushlabels.html and fails silently. The expected behavior for a Result object of type brushlabels should be either throwing an error if it is not a list or the dict should be converted to a list of length 1 so it is inline with the other Result object types for single class segmentation use cases.
Here is the working example with some simplifications based on https://labelstud.io/guide/predictions.html#Import-brush-segmentation-pre-annotations-in-RLE-format:
import numpy as np
import label_studio_converter.brush as brush
from label_studio_sdk import Client

LABEL_STUDIO_URL = 'http://localhost:8080'
LABEL_STUDIO_API_KEY = '92263ad5544e90d0c730aa088187994ba4cc3626'
LABEL = 'Mitochondria'

ls = Client(url=LABEL_STUDIO_URL, api_key=LABEL_STUDIO_API_KEY)
ls.check_connection()

project = ls.start_project(
    title=f"{LABEL} {seconds}",
    label_config=f"""
    <View>
    <Image name="image" value="$image" zoom="true"/>
    <BrushLabels name="tag" toName="image">
        <Label value="{LABEL}" background="#8ff0a4"/>
    </BrushLabels>
    </View>
    """
)

ids = project.import_tasks([
    {'image': f'http://localhost:7894/data_{i:04}.png'} for i in range(64)
])

mask = (np.random.random([512, 512]) * 255).astype(np.uint8)  # just a random 2D mask
mask = (mask > 128).astype(np.uint8) * 255  # better to threshold, it reduces output annotation size
rle = brush.mask2rle(mask)  # mask image in RLE format

project.create_prediction(task_id=ids[0], model_version=None, result = {
    "from_name": "tag",
    "to_name": "image",
    "type": "brushlabels",
    'value': {
        "format": "rle",
        "rle": rle,
        "brushlabels": [LABEL]
    }
})

This definitely deserves to be posted in SDK:
https://github.com/heartexlabs/label-studio-sdk/blob/master/examples/import_preannotations/import_brush_predictions.py
Thank you!


Fix tests

Adds the jsdom env
Use debug function to log error
Add command to allow use of external inspector.

Attempt to fix #65

I'm actually not sure who to have a little ping to check for this PR - @TimvanScherpenzeel & @drcmda

Amazing, thank you for the PR. Looks good to me!


[CAMEL-17579] Preserve the data type of a message on copy

[x] Make sure there is a JIRA issue filed for the change (usually before you start working on it).  Trivial changes like typos do not require a JIRA issue.  Your pull request should address just this issue, without pulling in other changes.
[x] Each commit in the pull request should have a meaningful subject line and body.
[x] If you're unsure, you can format the pull request title like [CAMEL-XXX] Fixes bug in camel-file component, where you replace CAMEL-XXX with the appropriate JIRA issue.
[x] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
[x] Run mvn clean install -Psourcecheck in your module with source check enabled to make sure basic checks pass and there are no checkstyle violations. A more thorough check will be performed on your pull request automatically.
Below are the contribution guidelines:
https://github.com/apache/camel/blob/main/CONTRIBUTING.md

Motivation
The data type of a message is lost when it is copied which causes issue when the data transformer can only be found thanks to the provided data type.
Modifications:

Add an utility method copyBody(Message source, Message target) to copy the body of a message to another message while taking care of the data type internally when applicable
Modify the different implementations of  copyFrom(org.apache.camel.Message that) to replace setBody with copyBody to preserve the data type
Modify the implementation of AbstractExchange#copy() to replace setBody with copyBody to preserve the data type

@davsclaus I've noticed that you added the label backport camel-3.14.x, Does it mean that I need to propose the backport in another PR or will you do it yourself?

I have backported.
Unfortunatly the label does not automatic create a PR - that was the idea. But we have permission problems with github actions for this kind - @oscerd knows more
So what we usually do is to manual backport via cherry picks

@davsclaus I see. Regarding the backport, I can't see it in the list of commits of what sounds like the corresponding branch https://github.com/apache/camel/commits/camel-3.14.x, or maybe it is another branch?

Oh I didnt push - I am in the middle of other things, can you backport via a PR

Oh I didnt push - I am in the middle of other things, can you backport via a PR

OK, no problem


Add support for SI numbers with binary formatting

Bug description
Our data is in the MiB, GiB, TiB, ... format. Superset currently only supports MB, GB, TB, ... formatting which leads to a wrong representation of the numbers.  The deviation becomes bigger as the data size increases, therefore I would like to add them.
Screenshots/recordings
No response
Superset version
4.1.0
Python version
Not applicable
Node version
Not applicable
Browser
Not applicable
Additional context
No response
Checklist

[X] I have searched Superset docs and Slack and didn't find a solution to my problem.
[X] I have searched the GitHub issue tracker and didn't find a similar bug report.
[X] I have checked Superset's logs for errors and if I found a relevant Python stacktrace, I included it here as text in the "additional context" section.

Duplicate of #30559, can be closed.

#30

Can be closed, duplicate of #30559.


Include filters to the Garden dashboard

We should build on the new designs: https://www.figma.com/file/IGMjM4UyW2yp9ImEUsHduG/✨Improvements-based-on-UX-research?node-id=0%3A1

can you specify which part of the spec these filters relate to so they can be tested?


Added Dependabot

See dependabot.

Is this file even necessary for this feature? For my Valibot repository GitHub does this automatically.

You can enable Dependabot from Project Settings too, but it still links to Learn more about configuring a dependabot.yml file, and it prompts to create one:

Without this file, I don't think there is a way to configure the schedule interval.
I was inspired by the stale dependencies.


Use a data validation library for modeling config

quartodoc involves a lot of data and configuration. Let's use a library like pydantic or dataclasses to explicitly model the config, and validate user config with feedback.

I've started using pydantic and it's incredible


Rel uniqueness sync

A few small changes. It...

makes associations :unique? defer to rel_class if set
adds rel_class? and relationship_class? methods to associations
adds create_method class method to ActiveRel
adds #{related_node}_neo_id method to ActiveRel instances to match CypherRelationship instances
adds unique? to ActiveRel to match association method

I also removed some instance variables in ActiveRel tests.

:metal:


Fix wrong -Xlinker propagation to Clang with WebAssembly

The -Xlinker values should be passed to Clang with -Xlinker but it was not done for WebAssembly. This patch fixes it by factoring out the common logic for processing -Xlinker and -Xclang-linker options and using it in all toolchains.

@swift-ci Please test


Extend wait time for auto-merge

I found sometimes 120000 ms * 6(default retry number) is not enough.
Run<EMAIL_ADDRESS>2023-08-18T00:26:5[9](https://github.com/containers/youki/actions/runs/5897312264/job/15996739428#step:4:10).[12](https://github.com/containers/youki/actions/runs/5897312264/job/15996739428#step:4:13)9Z INFO  Event name: pull_request
2023-08-[18](https://github.com/containers/youki/actions/runs/5897312264/job/15996739428#step:4:19)T00:26:59.679Z INFO  Skipping PR update, required label missing: automerge
[20](https://github.com/containers/youki/actions/runs/5897312264/job/15996739428#step:4:21)23-08-18T00:26:59.680Z INFO  Merging PR #2274 (auto merged) chore(deps): bump quote from 1.0.32 to 1.0.33
2023-08-18T00:26:59.681Z INFO  Current PR status: mergeable_state: blocked
2023-08-18T00:26:59.681Z INFO  Retrying after 120000 ms ... (1/6)
2023-08-18T00:28:59.993Z INFO  Current PR status: mergeable_state: blocked
2023-08-18T00:28:59.994Z INFO  Retrying after 120000 ms ... (2/6)
2023-08-18T00:31:00.456Z INFO  Current PR status: mergeable_state: blocked
2023-08-18T00:31:00.456Z INFO  Retrying after 120000 ms ... (3/6)
2023-08-18T00:33:00.807Z INFO  Current PR status: mergeable_state: blocked
2023-08-18T00:33:00.807Z INFO  Retrying after 120000 ms ... (4/6)
2023-08-18T00:35:01.3[21](https://github.com/containers/youki/actions/runs/5897312264/job/15996739428#step:4:22)Z INFO  Current PR status: mergeable_state: blocked
2023-08-18T00:35:01.3[22](https://github.com/containers/youki/actions/runs/5897312264/job/15996739428#step:4:23)Z INFO  Retrying after 120000 ms ... (5/6)
20[23](https://github.com/containers/youki/actions/runs/5897312264/job/15996739428#step:4:24)-08-18T00:37:01.750Z INFO  Current PR status: mergeable_state: blocked
2023-08-18T00:37:01.750Z INFO  Retrying after 120000 ms ... (6/6)
2023-08-18T00:39:02.187Z INFO  Current PR status: mergeable_state: blocked
2023-08-18T00:39:02.187Z INFO  PR not ready to be merged after 6 tries
2023-08-18T00:39:02.188Z INFO  Action result: { mergeResult: 'not_ready', pullRequestNumber: 2274 }

Codecov Report

Merging #2278 (d83c8d4) into main (f4b701b) will not change coverage.
Report is 4 commits behind head on main.
The diff coverage is n/a.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #2278   +/-   ##
=======================================
  Coverage   64.99%   64.99%
=======================================
  Files         129      129
  Lines       15153    15153
=======================================
  Hits         9848     9848
  Misses       5305     5305


<EMAIL_ADDRESS>can't show legend

[x] I have searched the issues of this repository and believe that this is not a duplicate.

Reproduction link

Steps to reproduce
as the code shows, I set the legend visible, but it doesn't show.
I had set the line size, line color and line shape attribute.
and I had tried followings:

chart.legend(true)
chart.legend({ position: 'bottom'})
add bottom padding

Environment
Info

g2
4.2.4

System
-

Browser
-

anyone could help?

尝试g2降级到3.x，上述写法 图例是完美展示的。
目前可以确定确实是升级4.x带来的问题，所以不清楚是 4.x底层默认不支持 双轴图的图例展示， 还是 4.x升级时这部分逻辑漏掉了。
如果设计不支持，建议升级文档能够说明下，毕竟也算是 break change 了。


Fix TypeError when using new_cluster argument to Distributed

Fix TypeError when using new_cluster argument to Distributed.

Thanks for the PR @oliverholworthy ! Is there a small test you can add (or a tweak to an existing test) to capture this fix? Or was the problem mostly that the docstring was using the wrong name (new_cluster vs cluster_type)?

It was because I tried to used the new_cluster parameter mentioned in the docstring. Which raises a TypeError.
with Distributed(new_cluster="cpu"):
    pass
# Raises TypeError: merlin.core.utils.set_dask_client() got multiple values for keyword argument 'new_cluster'


Transport Layer with Sharedmemory

Are you planning an early release of Share memory transport (Beta version).
Regards,
Anand Pavaskar

Hi Anand,
While this feature is on our roadmap, we have no specific dates.

@JaimeMartin
Hi, it's been a while, is there any approximate date to support shared memory?
my though is ROS2 intra-process is supported using unique_ptr and shared_ptr, but so far nothing is considered actively. expecting shared memory is really good method for inter-process.
thanks,
Tomoya

eProsima and Sony will develop a Shared Memory Transport for ROS2
https://www.eprosima.com/index.php/company-all/news/121-eprosima-and-sony-will-develop-a-shared-memory-transport-for-ros2

@vincent-hui
thanks for announcement !!!

Seems that it has been released already?

Same question. Has this already been implemented and released? If so, what version was it released in?

Looks like the feature was just recently added, so probably not released yet: https://github.com/eProsima/Fast-RTPS/pull/992

@MiguelCompany @vincent-hui @adolfomarver
would you like to mention the current status here, some people got interests.
@csherstan @wenbin1989
as you see and know, eProsima and Sony(we) been working on it. as for release information, we'd like to hear from eProsima.

@anandtp @vincent-hui @wenbin1989 @csherstan Fast RTPS 1.10.0 will come out this week, and will include a shared memory transport enabled by default.


Scala 3 Open Class for Style Classes

Use open class for concrete classes for style classes.

It does look good to me (I am glad I did not attempted myself, because I do not understand this preprocessing mechanism between DOTTY and Scala 2... - would've used more time on this than it looked up-front to require ...)


feat: support for did:jwk and p-256, p-384, p-512

Codecov Report

Merging #1446 (2104c0d) into main (9a43afe) will decrease coverage by 0.85%.
The diff coverage is 96.66%.

@@            Coverage Diff             @@
##             main    #1446      +/-   ##
==========================================
- Coverage   85.54%   84.69%   -0.85%
==========================================
  Files         886      898      +12
  Lines       21150    21394     +244
  Branches     3635     3681      +46
==========================================
+ Hits        18093    18120      +27
- Misses       2882     3070     +188
- Partials      175      204      +29

Impacted Files
Coverage Δ

packages/core/src/crypto/keyUtils.ts
75.00% <ø> (ø)

...s/core/src/modules/dids/domain/key-type/ed25519.ts
100.00% <ø> (+4.54%)
:arrow_up:

...ds/domain/verificationMethod/VerificationMethod.ts
100.00% <ø> (ø)

.../src/modules/dids/domain/key-type/keyDidMapping.ts
83.33% <66.66%> (-7.58%)
:arrow_down:

...ore/src/modules/dids/methods/jwk/JwkDidResolver.ts
88.88% <88.88%> (ø)

packages/core/src/crypto/Jwk.ts
92.30% <92.30%> (ø)

.../src/modules/dids/methods/jwk/didJwkDidDocument.ts
92.30% <92.30%> (ø)

...ges/core/src/modules/dids/domain/keyDidDocument.ts
98.11% <93.33%> (-1.89%)
:arrow_down:

packages/core/src/crypto/EcCompression.ts
97.91% <97.91%> (ø)

packages/askar/src/utils/askarKeyTypes.ts
100.00% <100.00%> (ø)

... and 17 more

... and 5 files with indirect coverage changes


[Doc] Keccak Doc

Please check for typos throughout.
Also please say a bit more / give an example of the vanilla table format if we only look at the first row per round. (I think having an actual markdown table could be very helpful visually - maybe GPT can just make this.)
And then same example but explaining what happens in the leaf circuit with encoding.

GPT is pretty useful! It helped me correct typos and generate the prototype of the table

Very nice tables! I think this will be very helpful.
One last question: is is_final actually 1 on the first 17 rows in the table? From
is_final: is_final_block && round == NUM_ROUNDS && row_idx == 0,

I actually thought it was only going to be nonzero on row 250.

My understanding on is_final was inaccurate. Corrected the description.


Use the metric system

changed tests and geom utils to return kilometers rather than miles.

by the way i don't know if i ran browserify properly so you might want to double check?
thanks!


ImageIO is faster

I have done performance test ImageIO vs NSData. I opened 95 files with 800x800 pixels on my iPod5.
NSData+UIImage = 1.498098 (your current implementation of reading image file from disk)
NSData+ImageIO = 1.637306
ImageIO = 0.429998
ImageIO is 3x faster.
ImageIO
int count = 0;
CFAbsoluteTime st = CFAbsoluteTimeGetCurrent();
for (NSURL *fileURL in fileEnumerator){
    count ++;
    @autoreleasepool {
    CGImageSourceRef imageSource = CGImageSourceCreateWithURL((__bridge CFURLRef)fileURL,
                                                              NULL);

    CGImageRef image = CGImageSourceCreateImageAtIndex(imageSource,
                                                       0,
                                                       NULL);
    UIImage *im = [UIImage imageWithCGImage:image];
    CFRelease(image);
    CFRelease(imageSource);

    }
}
NSLog(@"time:%f",CFAbsoluteTimeGetCurrent() - st);
NSLog(@"%d",count);

NSData+ImageIO
int count = 0;
CFAbsoluteTime st = CFAbsoluteTimeGetCurrent();
for (NSURL *fileURL in fileEnumerator){
    count ++;
    @autoreleasepool {

    NSData *data = [NSData dataWithContentsOfURL:fileURL];
    CGImageSourceRef imageSource = CGImageSourceCreateWithData((__bridge CFDataRef)(data), NULL);

    CGImageRef image = CGImageSourceCreateImageAtIndex(imageSource,
                                                       0,
                                                       NULL);
    UIImage *im = [UIImage imageWithCGImage:image];
    CFRelease(image);
    CFRelease(imageSource);

    }
}
NSLog(@"time:%f",CFAbsoluteTimeGetCurrent() - st);
NSLog(@"%d",count);

NSData+UIImage
int count = 0;
CFAbsoluteTime st = CFAbsoluteTimeGetCurrent();
for (NSURL *fileURL in fileEnumerator){
    count ++;
    @autoreleasepool {

    NSData *data = [NSData dataWithContentsOfURL:fileURL];
    UIImage *i = [UIImage imageWithData:data];

    }
}
NSLog(@"time:%f",CFAbsoluteTimeGetCurrent() - st);
NSLog(@"%d",count);

Is anyone here interested in trying this approach in a Pull Request?

Maybe image created by ImageIO  is lazy load it's content.

@CodeLife2012  UIImage is kind of lazy loaded in its nature. No matter how you create it, UIImage won't do the decompression thing until it's being displayed in UIView.
Here in the example UIImage is just created. If you're doubting the equality of the test, I don't think there's a point, since all those methods are just doing the same instance-creation part.

I said Lazy load  is not about decompression , it just the load of the image. When create a source with CGImageSourceCreateWithURL, actually the file isn't loaded, maybe mmap to the file. The file is loaded into memory when first access.
So there is no difference between NSData+ImageIO and NSData+UIImage.

I have create a demo for test, you can see clearly the real memory consumed between two approaches(3.4m->160m). So when use  CGImageSourceCreateWithURL  the file is actually not loaded into memory instantly.
@skyline75489

@CodeLife2012 Interesting. Looks like ImageIO is merely a trade-off between speed and memory. In that case, I'm not sure that #1707 is really that necessary. CC @bpoplauschi

Guys, based on #1991 now we can add another coder with the suggestions here. Or people can directly do that inside their projects, as now we can plugin the coders

Per my last comment, closing


MinGW support?

I tried to build master branch with gcc 4.8.5 and gcc 5.2.0 (with help from mman-win32 project) but stuck at assembly source :
c:/msys32/gcc48/bin/../lib/gcc/i686-w64-mingw32/4.8.5/../../../../i686-w64-mingw32/bin/as.exe: BFD (tumaG86) 2.28.1 assertion fail ../../binutils-2.28.1/bfd/coff-i386.c:574
E:/Sources/libobjc2-master/objc_msgSend.x86-32.S: Assembler messages:
E:/Sources/libobjc2-master/objc_msgSend.x86-32.S:78: Error: cannot represent relocation type BFD_RELOC_386_GOTPC
c:/msys32/gcc48/bin/../lib/gcc/i686-w64-mingw32/4.8.5/../../../../i686-w64-mingw32/bin/as.exe: BFD (tumaG86) 2.28.1 assertion fail ../../binutils-2.28.1/bfd/coff-i386.c:574
E:/Sources/libobjc2-master/objc_msgSend.x86-32.S:82: Error: cannot represent relocation type BFD_RELOC_386_GOTPC
c:/msys32/gcc48/bin/../lib/gcc/i686-w64-mingw32/4.8.5/../../../../i686-w64-mingw32/bin/as.exe: BFD (tumaG86) 2.28.1 assertion fail ../../binutils-2.28.1/bfd/coff-i386.c:574
E:/Sources/libobjc2-master/objc_msgSend.x86-32.S:86: Error: cannot represent relocation type BFD_RELOC_386_GOTPC
make[2]: *** [CMakeFiles/objc.dir/build.make:577: CMakeFiles/objc.dir/objc_msgSend.S.obj] Error 1
make[1]: *** [CMakeFiles/Makefile2:61: CMakeFiles/objc.dir/all] Error 2
make: *** [Makefile:144: all] Error 2

Honestly I don't know which bug is this? gcc, binutils or libobjc...

What happens if you try to build with clang?  gcc's support for Objective-C is pretty useless and I believe it has been built with on Windows with clang before.  That said, if you're targeting Windows, I'd recommend looking at Microsoft's fork in the WinObjC project, which has a few patches that haven't yet been merged upstream for better interop with Windows C++ exceptions.

I need XP support , winobjc has demanding development tools and might not support XP as it under MS.
With gnustep-base and gcc libobjc things already works for me. I just want to see if libobjc2 improve things as it claim.

I need XP support , winobjc has demanding development tools and might not support XP as it under MS.
With gnustep-base and gcc libobjc things already works for me. I just want to see if libobjc2 improve things as it claim.
With clang it just handover it back to gas. hence same error

Try clang -integrated-as.

(Note: This may still not work and we might need different relocation types on Windows)

Closing due to lack of feedback from submitter, please reopen if still relevant.


⚠ Bofrost.de has degraded performance

In 6fcb5e3, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1783 ms

Resolved: Bofrost.de performance has improved in ac0be83 after 6 minutes.


path format is missing leading / and breaks menu active item

Describe the bug
Generated config does not work with VitePress' active menu item marker.
This is because it does not generate leading slashes in link items:
[
  {
    items: [
      {
        text: 'Get Started',
        link: 'docs/get-started/index.md',
        items: [
          {
            text: 'Installation',
            link: 'docs/get-started/installation'
          },
          ...

To Reproduce
Generate any config and assign it to to the theme config.
This is my repo + config:

https://github.com/spectre-org/spectre-docs
https://github.com/spectre-org/spectre-docs/blob/main/.vitepress/config.mts

Expected behavior
When navigating the site, the menu should highlight and show a border next to the active item.
Screenshots
Normal config:

Config updated by walking the structure and prefixing all links with /:

System

OS: Mac
Browser: Chrome

btw, on windows (Brave, based on Chromium engine), I do get that menu highlight for the active item. Maybe a platform issue?

I'm happy to do some more testing!

@DanielTrommel – if you log your menu structure, what do you get?
console.log(JSON.stringify(sidebar, null, '  '))

I added the first few lines of mine to the original comment.

@davestewart  I get the same; no slashes at the start or end of the "link".
However, I just looked at your config.mts and noticed you used slashes for the value on this line:  https://github.com/spectre-org/spectre-docs/blob/main/.vitepress/config.mts#L8
You use:
  documentRootPath: '/',
  scanStartPath: '/docs/',
  resolvePath: '/docs/',

I use something like this:
  documentRootPath: 'docs',
  scanStartPath: '1-getting-started',
  resolvePath: '/1-getting-started/',

I am not sure about the slash you use for documentRootPath, but I am pretty sure you should NOT be using those slashes for scanStartPath. Remember reading about it in the documentation.
Also, you might want to add array brackets [  ]  around your { } input into the generateSidebar method. I found out the hard way (see https://github.com/jooy2/vitepress-sidebar/issues/164)

Hey Daniel,
Thanks for helping out!
It seems that the [] notation is for multiple sidebars only, and I only have one in my site – but I do have these docs in a single sub-folder /docs.
However, changing the notation as you suggested made the links work (so could remove my workaround) so thank you! 🙏.
I have read through the docs again as you suggested, and yes, the author does mentioned some of these caveats.
It seems that:

scanStartPath is really "folder path" (below documentRootPath)
resolvePath is really "matching route" (in the browser)

I think they could be better named, however, but I wonder if some defensive programming on the side of the library might have helped?
I'm actually coming back to my VitePress code to do some maintenance, so it's possible I just wasn't in "getting started with a library mode!"
Also, @jooy2, it might be nice to break out the config into sections, as it's kind of overwhelming!
import { generateSidebar } from 'vitepress-sidebar';

export default {
  themeConfig: {
    sidebar: generateSidebar({
      /*
       * For detailed instructions, see https://vitepress-sidebar.cdget.com/guide/api
       */

      // folders
      // documentRootPath: '/',
      // scanStartPath: null,
      // basePath: null,
      // resolvePath: null,

      // titles
      // useTitleFromFileHeading: true,
      // useTitleFromFrontmatter: true,
      // frontmatterTitleFieldName: 'title',
      // useFolderTitleFromIndexFile: false,
      ...

Also, in the Example Output section, it would be useful to see the folder structures as you have in other parts of the site, to see how the config actually relates to the scanning:
+- examples
    +- ...

Thanks all.
Will leave this open for now.


read an complete .gql file | insert behaviour

Problem to Solve
If you have an .gql file, that contains definitions and inserts then this causes an exception
with open("/path/grakn/grakn-core-all-linux-1.5.0/tests/foo.gpl") as f:
    definitions_and_inserts = f.read()

with GraknClient(uri="localhost:48555") as client:
    with client.session(keyspace="test") as session:
        with session.transaction().write() as write_transaction:
            write_transaction.query(definitions_and_inserts)
            write_transaction.commit()

but from console this works:
./grakn console --keyspace test --file tests/foo.gql
Current Workaround
To avoid such behavior the original .gql file need to be split in two parts, definitions as one and inserts as the other like this:
with open("/path/grakn/grakn-core-all-linux-1.5.0/tests/foo_d.gpl") as f:
    definitions = f.read()

with open("/path/grakn/grakn-core-all-linux-1.5.0/tests/foo_i.gpl") as f:
    inserts = f.read()

with GraknClient(uri="localhost:48555") as client:
    with client.session(keyspace="test") as session:
        with session.transaction().write() as write_transaction:
            write_transaction.query(definitions)
            write_transaction.query(insert)
            write_transaction.commit()

Now the definitions are committable, but unfortunately the insert part still fails with exceptions.
So one needs to do the following:
with open("/path/grakn/grakn-core-all-linux-1.5.0/tests/foo_i.gpl") as f:
    inserts = [e for e in f.read().split("\n\n") if e.strip() and not e.startswith("#")]
    # Attention see below

with GraknClient(uri="localhost:48555") as client:
    with client.session(keyspace="test") as session:
        with session.transaction().write() as write_transaction:
            write_transaction.query(definitions)
            for insert in inserts:
                write_transaction.query(insert)
            write_transaction.commit()

But since in the foo_i.gql some of the inserts are multilines (match\n..\n..insert\n..\n) one need to insert blank lines to make an easy split with little logic (not empty and not just a comment which also causes exceptions) and split at \n\n. This is painful since one needs to also split up single-line inserts with blank lines.
Example:
insert $n isa NNP, has Lemma "Geldstrafe";

insert $z isa NZP, has Lemma "Jahre", has Eigenschaft "bis zu fünf (<=5)";

match
    $NO isa NEP, has Lemma "Wer";
    $DO isa NEP, has Lemma "anderer";
    $AO isa NNP, has Lemma "Sache";
    $PO isa NNP, has Lemma "in der Absicht";
insert
    $VP (NO: $NO, DO: $DO, AO: $AO, PO: $PO) isa VP;
    $VP has Lemma "wegnehmen";

match
    $A1 isa NEP, has Lemma "Wer";
    $A2 isa NEP, has Lemma "Dritter";
insert
    $Alt (Alt_1: $A1, Alt_2: $A2) isa Alternative;
    $Alt has Lemma "oder";

(the blank line between the first two inserts is painful especially if you have a lot of them).
Proposed Solution
Since my guess is that you don't want to change the behaviour of write_transaction.query() it be great to have a write_transaction.from_file() which would take the path to the original foo.gql and read it without exceptions like:
with GraknClient(uri="localhost:48555") as client:
    with client.session(keyspace="test") as session:
        with session.transaction().write() as write_transaction:
            write_transaction.from_file("/path/grakn/grakn-core-all-linux-1.5.0/tests/foo.gpl")
            write_transaction.commit()

Thanks for the issue and clear explanation :) This is something we definitely want to be able to do in the future, but as of right now it's on our longer term roadmap rather than short term.
The reason you can do this in console is that it uses java under the hood, which can in turn utilise the full language definition for Graql, including grammar parsing. The method that parses a series of queries is called Graql.parseList(String) and returns our native GraqlQuery types that can be fed directly into client-java.
As it stands, we don't have a full grammar parser in languages other than Java, though it is something we want to do, and would enable exactly the behavior you're looking for.
The shortest way to do it in pytho might actually be to call console -f from python! That way you can load all the static data in one go, and restrict the client for interactive database operations. How feasible is this for you? If you don't have the client on the same machine on the server, you may be able to write a tiny java program that encapsulates this functionality and also takes URI.

@flyingsilverfin Ah, you are right. Since I use ipython (or jupyter) notebook anyways I can just access the shell behind and call it from there, that will most likely work. Still having a function in the python client should be the long term solution, so shall we leave this issue open or close it?

Let's shut this one and track it in Graql's repository directly. Thanks!


Lower case kind annotation on webhook pod mutation

Description
Set the Webhook Pod mutation kind annotation to lower case, according to DT semantic dictionary (https://bitbucket.lab.dynatrace.org/projects/DEUS/repos/semantic-dictionary/browse/source/fields/k8s.yaml)
How can this be tested?

Unit tests
Deploy an app workload and check its pods annotations, should contain the workload kind in lower case

Checklist

[X] Unit tests have been updated/added
[X] PR is labeled accordingly with a single label
[X] I have read and understood the contribution guidelines

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 66.82%. Comparing base (b4e7a1f) to head (78f6eb8).

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##             main    #2878   +/-   ##
=======================================
  Coverage   66.82%   66.82%
=======================================
  Files         253      253
  Lines       13789    13789
=======================================
  Hits         9214     9214
  Misses       3768     3768
  Partials      807      807

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


work on fix where we may skip a block if leader two views in a row

Closes #3462

This PR:

Fixes a bug where a node could be the leader for the current and next view. Currently we only propose block for current view.
This PR does not:

Key places to review:

 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.


Make LargeAddressAware incremental

Unfortunately, we have two processes that run in sequence to modify the
output binary in place. This can happen:

Initial compile
First editbin
First OpenSourceSign
Second compile (skipped, up to date)
Second editbin (runs, wasn't incremental before this commit)
Second OpenSourceSign (runs, prior step makes it appear out of date)

The last OpenSourceSign then complains "this assembly is already
signed", breaking the build.
Fixes #1657 by treating editbin + OpenSourceSign as a unit for purposes
of incrementality.

Long term, we can avoid OpenSourceSign by using the new Roslyn /publicsign+ option, integrating that step into csc.exe. If https://github.com/dotnet/roslyn/issues/9209 is implemented, we can do it all without post-processing and life will be awesome.


[Proposal] Generate Font class

Proposal to have the generator generate a font class with child classes to solve:

Being able to have font related methods such as preload
Splitting up fonts in files to reduce GoogleFonts.dart file size
Easier to extend font functionality with polymorphism

This would bring some changes to the public API. For example you would get a TextStyle like this:
style: const LatoFont().style();
or,
style: const GoogleFonts.getFont(GoogleFontFamily.lato).style();
or,
style: const GoogleFonts.getFontDynamically('Lato').style();
And a theme like this
textTheme: const LatoFont().theme(baseTheme.textTheme);
or,
textTheme: const GoogleFonts.getFont(GoogleFontFamily.lato).theme(baseTheme.textTheme);
or,
textTheme: const GoogleFonts.getFontDynamically('Lato').theme(baseTheme.textTheme);
But I believe this is for the better and would allow to extend fonts with more functionality. You would be able to preload fonts like this:
class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Preload Example',
      home: FutureBuilder(
        future: Future.wait([
          const AlikeFont().preload(),
          const LatoFont().preload(),
        ]),
        builder: (context, snapshot) {
          if (snapshot.connectionState != ConnectionState.done) {
            return const Center(
              child: CircularProgressIndicator(),
            );
          }
          return const MyHomePage();
        },
      ),
    );
  }
}

class MyHomePage extends StatelessWidget {
  const MyHomePage({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Styled text',
              style: const LatoFont().style(
                fontStyle: FontStyle.italic,
              ),
            ),
          ],
        ),
      ),
    );
  }
}

In the latest commit I added support for subsequent calls to the preload function. Imagine having multiple widget trying to use the font at the same time. Or in my case multiple Flame components.
I wrote the following test but it fails with the exception
Exception: Failed to load font with url
Would love to know how I would get around that.
  testWidgets('preload load works ', (tester) async {
    await tester.runAsync(() async {
      final allFonts = GoogleFonts.fontFamilies;
      for (var fontFamily in allFonts) {
        final dynamicFont = GoogleFonts.getFontDynamically(fontFamily);
        dynamicFont.preload();
        dynamicFont.preload();
        expect(pendingFontLoads.keys, contains('${dynamicFont.name}_regular'));
      }
      await Future.wait(pendingFontLoads.values);
      expect(allFonts, isNotEmpty);
      expect(pendingFontLoads, isEmpty);
    });
  });

Hi @duck-dev-go,
First of all, I really appreciate the effort you've put into understanding the codebase and authoring this PR. Unfortunately, this functionality is out of scope for Google Fonts at this time, for a couple of reasons -

It clashes with the current PR we're looking to merge shortly - https://github.com/material-foundation/google-fonts-flutter/pull/195
It introduces large breaking changes to the API.

I'm closing this for now, but once again - thank you for your efforts. The team would gladly welcome future contributions from you!

Additionally, I would recommend keeping unrelated changes in separate PRs, it aids in review, keep PRs from getting too big, and makes them easier to accept.


enabling this repository to be used as a template?

Hi,
is it possible for you to make this repository accessible as a template?
Forks are more suitable when the developer intends to make PRs to the original repo and with this the contributions in the fork are not shown in the contribution graph. But it is less applicable when I'm using your code as a baseline for my own project. Hence, there's a feature on github where it's possible to make a repository to be used as a template by others, i.e. this https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/creating-a-template-repository for enabling and this for using https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/creating-a-repository-from-a-template.

The repository has been updated to a template, although it might take a bit more time before all of the documentation is updated appropriately.

"Use This Template" Button missing for me. SO, I guess it is no longer available as a template (as mentioned in the README) or?

@GillesC I'm not seeing the button either, but since I'm the repository owner my screen is generally a bit different. You should see something similar to what appears in GitHub's tutorial for templates.


Extending IdentityManager some methods should be public

I have become very familiar with IdentityManager and IdenityServer3.
I use IdentityManager as a GUI - Backdoor to add users. (We do not try and use the endpoints in the project)
I have created another WebAPI project that Utilizes the AspNetIdentityManagerService: IIdentityManagerService class via our own derived class from AspNetIdentityManagerService. My goal was to utilize existing functionality, but stay inline with IdentityManager as best I could. I didn't want to duplicate the functionality already available in AspNetIdentityManagerService.
I have found that there are a few Extentions that are private: (IdentityManagerResultExtensions, ModelStateDictionaryExtensions and StringExtensions). I think the above should be 'public' methods, so we can utilize them.
I can make the code change via a PR if you want. I just wanted to see if this is something you agree with first. #

I guess I'm open to it.

This is completed. We can close now.


Research simplest, cleanest option for including and calling lib from Python

I'm hoping something like CTYPES will work.  This issues is dependent on #7
All C function defined in DslApi.h should be easily callable. All functions use and return simple intrinsic types only (char, unit). The Component
Should be lots of info online.  Add finds to issues

@Sscsmatrix New pull request this morning... cleans up the single, client required header file
DslApi.h.  I removed few dependencies on other files, and all types used are now intrinsic.
Test cases are currently failing as some of my component API implementation is still "work in progress" (WIP). ... wow, test driven development. :)

I started playing around with ctypes.  I was able to create a shared library and import it.
The command below creates a shared library from a static library:
g++ -shared -o dsl-lib.so dsl-lib.a
then from python you can run:

from ctypes import *

and then:

cdll.LoadLibrary("dsl-lib.so")

which loads the library into python.

Hopefully the system captured my previous comment.  I tried this yesterday and the comment was nowhere to be found.

@Sscsmatrix, thanks for working on this.  I'm able to build the shared library (cool), but when I try the following:
from ctypes import *

lib = cdll.LoadLibrary("dsl-lib.so")

print(lib.dsl_pipeline_new("pipeline1"))
print(lib.dsl_pipeline_delete("pipeline1"))

the script fails because it can't fine the symbols dsl_pipeline_new and dsl_pipeline_delete.
I'm not sure if we need something added to CFLAGS or something to tell the linker that DslApi.h has the extern "C" functions in it.  I know how to do in in Windows :-)
Would you have time to look into this further?  The little snippet of code above should run and print out 0 (success) for both function calls
Thanks Mike.

Robert this task is not done.  I was just using the comments to capture my progress.  I found that I need to modify the makefile in order to get the symbols for the dsl stuff included.  But when I did that python complained about the gserver functions not being found.  So I am working on that issue.  I also decided to check out swig to see if that is a better option.

thanks again @Sscsmatrix.
There are a couple of things I'm particularly interested in:

how does Python handle the dsl service return codes, as they are #define's and Python has no equivalent. Perhaps they will need to be redefined in a .py file as variables?
how simple is it to register callback functions from Python to C? given the below.

// callback function
typedef void (*state_change_listener_cb)(uint prev_state,
    uint curr_state, void* user_data);

// registration
DslReturnType dsl_pipeline_state_change_listener_add(const char* pipeline,
    state_change_listener_cb listener, void* user_data);

Once I use -fPIC as a compile option, I can then use nm -D dsl-lib.so and see the symbols.  In a terminal, $nm -D dsl-lib.so | less
Unfortunately the following python sequence gives the following error:
import ctypes
lib = ctypes.CDLL("dsl-lib.so")
OSError: dsl-lib.so: undefined symbol: _gst_debug_min
So I am investigating if I need to either import other modules or modify the Makefile or shared library build command to reference gst symbols.
In addition, I am playing around with building my own simple shared library file and python.  Using a simple file might highlight something that I have missed and be easier to see than if I am trying to examine the dsl-lib.so file.
Robert, I will also look into your two items mentioned above.

So I have been able to fix the OSError.  I had to modify the Makefile to build the shared library and link in the gst files.  I added this line to the Makefile
so_lib:
$(CC) -shared $(OBJS) -o dsl-lib.so $(LIBS)
I then noticed that I had to place extern "C" for the calls in the DslApi.h file and the cpp file in order to prevent name mangling.  So now I am able to run the commands.  Unfortunately when I try and execute dsl_pipeline_new("pipeline1")  inside of python I get a segmentation fault.
sscsmatrix@sscsmatrix-desktop:~/Projects/CanAmMex/deepstream-services-library$ python3
Python 3.6.8 (default, Oct  7 2019, 12:59:55)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.

import ctypes
libc = ctypes.CDLL("dsl-lib.so")
libc.dsl_pipeline_new("pipeline1")
Segmentation fault (core dumped)

So I am troubleshooting that issue.  Maybe I need to run some initialization code first??

Okay I was able to get rid of the Segmentation fault by running my code on the target.  My issue was that I was executing the code from an SSH session.  If I want to execute the software remotely then I need to use VNC.  So now I am going to start bringing in more of the API into the python library.

@Sscsmatrix sounds like great progress... just fyi... I made all of the DSL API's extern "C" some time ago... try pulling the latest when you get a change

I checked in changes to the Makefile and you should be able to build dal-lib.so and run it in Python as I described above.  So we should be able to close this issue.  After looking at other methods, it seems to me that using ctypes is the most universal approach and doesn't require installing additional third-party software like swig would require.


Mht apidoc

Make sure that:

[ ] You have read the contribution guidelines.
[ ] You submit test cases (unit or integration tests) that back your changes.
[ ] Your local test passed ./mvnw clean install -Dmaven.javadoc.skip=true.

Codecov Report

Merging #4085 (ccc8e3e) into master (5f0e635) will decrease coverage by 0.26%.
The diff coverage is 73.80%.

@@             Coverage Diff              @@
##             master    #4085      +/-   ##
============================================
- Coverage     70.02%   69.76%   -0.27%
+ Complexity     6811     6791      -20
============================================
  Files           939      941       +2
  Lines         25604    25688      +84
  Branches       2298     2306       +8
============================================
- Hits          17928    17920       -8
- Misses         6273     6364      +91
- Partials       1403     1404       +1

Impacted Files
Coverage Δ

...pache/shenyu/admin/model/entity/TagRelationDO.java
71.42% <71.42%> (ø)

...va/org/apache/shenyu/admin/model/entity/TagDO.java
75.51% <75.51%> (ø)

.../client/server/consul/ShenyuConsulConfigWatch.java
60.41% <0.00%> (-25.00%)
:arrow_down:

...a/org/apache/shenyu/common/utils/VersionUtils.java
67.85% <0.00%> (-10.72%)
:arrow_down:

...henyu/plugin/grpc/resolver/ShenyuNameResolver.java
54.25% <0.00%> (-9.58%)
:arrow_down:

...henyu/admin/service/impl/UpstreamCheckService.java
56.66% <0.00%> (-7.34%)
:arrow_down:

.../apache/shenyu/admin/model/dto/BatchCommonDTO.java
50.00% <0.00%> (-7.15%)
:arrow_down:

...apache/shenyu/admin/model/dto/AuthPathWarpDTO.java
57.14% <0.00%> (-7.15%)
:arrow_down:

...org/apache/shenyu/admin/model/dto/AuthPathDTO.java
58.82% <0.00%> (-5.89%)
:arrow_down:

...rg/apache/shenyu/plugin/rewrite/RewritePlugin.java
66.66% <0.00%> (-5.56%)
:arrow_down:

... and 28 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


why in web and  in moblie, the result  shows  different?

Chart.js version: 2.6.0
Browser name and version:
Mozilla/5.0 (Linux; Android 5.1; m3 note Build/LMY47I; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/44.0.2403.146 Mobile Safari/537.36"

code:
new Chart(ctx, {         type    : 'bar',         data    : {             labels   : [ 'Red', 'Blue', 'Yellow' ],             datasets : [ {                 label           : '# of Votes',                 data            : [ 1, 2, 3 ],                 backgroundColor : [                     'rgba(255, 99, 132, 0.2)',                     'rgba(54, 162, 235, 0.2)',                     'rgba(255, 206, 86, 0.2)',                     'rgba(75, 192, 192, 0.2)',                     'rgba(153, 102, 255, 0.2)',                     'rgba(255, 159, 64, 0.2)'                 ],                 borderColor     : [                     'rgba(255,99,132,1)',                     'rgba(54, 162, 235, 1)',                     'rgba(255, 206, 86, 1)',                     'rgba(75, 192, 192, 1)',                     'rgba(153, 102, 255, 1)',                     'rgba(255, 159, 64, 1)'                 ],                 borderWidth     : 1             } ]         },         options : {             scales : {                 yAxes : [ {                     ticks : {                         beginAtZero : true                     }                 } ]             }         }     })

but if data is [1 , 2 , 13] ,will show right , it's so funny

It could have to do with the fact that the top example shows a scale with decimals. The decimal numbers seem to be too wide to fit on the screen. Forcing integer labels could be a temporary solution to this issue.

This is another duplicate of #4441, though only the first workaround from there will work here.  As mentioned in that issue, explicitly setting the step size to 0.5 gets the correct space allocation for the floating point tick labels, but also messes up responsive updates that should change between integer and floating point tick text.

Thanks @mMerlin. Closing as duplicate of #4441


Test test-constants fail on powerpc

Hello,
I'm trying to make a decent Debian package for ocaml-ctypes. The last version (0.6.2) fails to build on powerpc. Version 0.4.1 also failed to build. Build logs are available at:
https://buildd.debian.org/status/package.php?p=ocaml-ctypes&suite=sid
One test that fails is test-constants. A preliminary investigation reveals that the failing assumptions are equalities between 8-bit and 16-bit constants. For example,

Constants._UINT16_MAX is 65535
(constant "UINT16_MAX" Ctypes.uint16_t) is 0

I've disassembled _build/clib/libtest_functions.so, and retrieve_UINT16_MAX is correct. I suspect an endianness issue (powerpc is big-endian).

The following simple code:
#include <stdio.h>
#include <stdint.h>
#include <ffi.h>

uint16_t retrieve_UINT16_MAX() {
  return UINT16_MAX;
}

int main() {
  uint16_t r[2];
  ffi_cif cif;
  ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 0, &ffi_type_uint16, NULL);
  ffi_call(&cif, retrieve_UINT16_MAX, r, NULL);
  printf("UINT16_MAX = %d\n", r[0]);
  return 0;
}

returns 0, but returns 65535 when r[0] is replaced by r[1] in the printf call. Whether this is a bug or feature of libffi is unclear to me at the moment.

According to the PowerPC ABI, page 3-22 (38) ("Return Values"):

Functions shall return values of type int, long, enum, short, and char, or a pointer to any type as unsigned or signed integers as appropriate, zero- or sign-extended to 32 bits if necessary, in r3.

See https://sourceware.org/ml/libffi-discuss/2016/msg00028.html

See the libffi documentation.  One has to use ffi_arg, not uint16_t, for integral values smaller than the system register size.

Thanks for clarifying, @rth7680.
Is ffi_arg always the same size as the register size?  It would be convenient to be able to compare the size of the return type with ffi_arg when deciding how to store the return value.

Yes, comparing sizeof(ffi_arg) vs sizeof(type) will work.

@glondu, I think #405 (now merged into master) fixes this.  Could you please confirm?

It fixes the powerpc issue, but introduces new failures on armel/armhf:
https://buildd.debian.org/status/package.php?p=ocaml-ctypes&suite=unstable
==============================================================================
Error: Higher-order tests:5:test_function_pointer_returning_char (foreign).

File "/«PKGBUILDDIR»/_build/oUnit-Higher-order tests-henze#00.log", line 39, characters 1-1:
Error: Higher-order tests:5:test_function_pointer_returning_char (foreign) (in the log).

Raised at file "src/oUnitAssert.ml", line 45, characters 8-27
Called from file "src/oUnitRunner.ml", line 46, characters 13-26

not equal
------------------------------------------------------------------------------
==============================================================================
Error: Higher-order tests:4:test_function_pointer_returning_char (stubs).

File "/«PKGBUILDDIR»/_build/oUnit-Higher-order tests-henze#00.log", line 32, characters 1-1:
Error: Higher-order tests:4:test_function_pointer_returning_char (stubs) (in the log).

Raised at file "src/oUnitAssert.ml", line 45, characters 8-27
Called from file "src/oUnitRunner.ml", line 46, characters 13-26

not equal
------------------------------------------------------------------------------

@glondu, I believe #406 fixes the problem on armel/armhf.  Could you please confirm?

It fixes the problem on armel/armhf, but tests fail again on powerpc:
==============================================================================
Error: Higher-order tests:5:test_function_pointer_returning_char (foreign).

File "/«PKGBUILDDIR»/_build/oUnit-Higher-order tests-praetorius#00.log", line 39, characters 1-1:
Error: Higher-order tests:5:test_function_pointer_returning_char (foreign) (in the log).

Raised at file "src/oUnitAssert.ml", line 45, characters 8-27
Called from file "src/oUnitRunner.ml", line 46, characters 13-26

not equal
------------------------------------------------------------------------------
==============================================================================
Error: Higher-order tests:4:test_function_pointer_returning_char (stubs).

File "/«PKGBUILDDIR»/_build/oUnit-Higher-order tests-praetorius#00.log", line 32, characters 1-1:
Error: Higher-order tests:4:test_function_pointer_returning_char (stubs) (in the log).

Raised at file "src/oUnitAssert.ml", line 45, characters 8-27
Called from file "src/oUnitRunner.ml", line 46, characters 13-26

not equal
------------------------------------------------------------------------------

Thanks, @glondu.  I'm going to set up multi-arch CI before attempting any more fixes.  I'll let you know how things progress.

The problem might be due to the missing return in ffi_return_type_adjustment...

That does seem likely!  #407 adds the return.

I confirm that this fixes the issue on powerpc without introducing new ones.


Convert from Panel to Dock

Atom has added docks. It seems like a natural place for the terminal. http://blog.atom.io/2017/05/16/atom-1-17.html

Anyone working on this ? Would be awesome. And will be faster too.

cc @ivankravets

Sorry, currently is busy with @PlatformIO. Would be thankful for PR.

This is a community-driven plugin. We maintain it. Please provide PR.

I would love to , but i am in the process of a project signed off so , can someone else step in?

I can help with this. I'll try to open a PR soon


Loyalty bundle to examples

This change is

Reviewed 228 of 229 files at r1.
Review status: 228 of 229 files reviewed at latest revision, all discussions resolved.

Comments from Reviewable


Implement Neg for PgMoney

This is a preatty easy one, it just implements the Neg trait for PgMoney

@Aandreba 0.7-dev has now been merged into main which is why your PR was automatically closed. Please feel free to rebase on main and open a new PR.


Androidx

project is migrated to androidx
migrated via Android Studio 3.4.2
compileSdkVersion is set to 28
no any code logic are changed
gradle versions are updated to stable versions
tested the application after migration and is working fine in sample app

This has been done and merged in #236 ;)


Structs, C ABI + always the most optimized field arrangement?

Is it possible to satisfy optimized field arrangement without re-ordering fields at compile time?
Yes.
Just force the developer to align fields in an optimized order, and throw a compiler error if they don't.
Why do this? I'm not sure exactly what the C ABI is, but I do know it has to do with field re-ordering in structs. It would be nice if Golang could comply with the C ABI, making it much easier to use Golang alongside C.
Go fmt could automatically re-order fields for the developer on save to prevent the mental overhead of field re-ordering.

Nice. I do have one thought. It would be annoying if fmt automatically changes the order for you. I can think of use cases where the ordering of fields has meanings other than memory consumption optimization (anything that's based on reflection for that matter). In such cases you do not want any tool to automatically override your decisions.
I suggest adding it to the compiler options, as suggested in this issue by @marcelloh. We could have compiler options (similar to typescript's for example) and set it there.
WDYT?

I would suggest to do it on compile time and not force the developer to write it in an optimal way.
The reason behind this is that the struct might be written in a way that makes it readable (sorted, or ID field first and such)
Sources are for humans after all. But to optimise it when compiling would be ideal. The developer won't notice a thing but the program is compiled in a more efficient way.

@marcelloh this is not completely true. Everything based on reflection would be affected. For example the order that would be produced in json.Marshal gets reshuffled, in some cases it may hurt what the developer is trying to achieve. Personally, I wrote an internal library that generates web forms from go structs. The ordering of the fields in the form was derived from the ordering of the fields in the struct. In such a case, I'd get really annoyed if a compilation tool would decide the optimization if more important by default.
Since this is visible, i'd suggest we allow optimizing, but keep original order by default.

Well, the code would not be written in .go files I just assumed, but in .goat files.
Those can be in the desired order, while the transpiled .go files have the ideal order for the compiler.
(and the json would of course return the ideal order)

The problem is that reflection based code (like json) is executed in runtime and thus familiar only with the transpiled go files. Meaning that although the order of the goat file will be
A
B
C

In go it might be
B
A
C

for example, producing unexpected results.
I'm fine with that and I agree that in most cases, developers would want automatic memory optimization. In edge cases they will be very surprised to discover them. If it was completely invisible then I totally agree. But since it is visible I think we should decide how to approach it.
WDYT?

I think that nobody should trust the order of a json. It's a human readable data format with no specific ordering rules.
So I'm all for using less memory.
(But perhaps this can be a setting in the transpiler :-) )

@marcelloh I agree. Only problem is "if it's a side effect, it's a feature" and that fact is go uses reflection for JSON


Added an event for default rule "Unprivileged Delegation of Page Faults Handling to a Userspace Process"

What type of PR is this?

Uncomment one (or more) /kind <> lines:

/kind bug

/kind cleanup

/kind documentation

/kind tests

/kind feature

Any specific area of the project related to this PR?

Uncomment one (or more) /area <> lines:

/area commands

/area pkg

/area events

What this PR does / why we need it:
Added an event for default rule "Unprivileged Delegation of Page Faults Handling to a Userspace Process" as mentioned here
Which issue(s) this PR fixes:

Fixes #170
Special notes for your reviewer:

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by: GLVSKiriti
Once this PR has been reviewed and has the lgtm label, please assign leogr for approval. For more information see the Kubernetes Code Review Process.
The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

This event is also tested against a running a falco instance and produces the critical priority log as expected on left terminal

LGTM label has been added.  Git tree hash: ba7791d58984e180ddf7bc4b6a26b92443fbf5a4

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: GLVSKiriti, leogr
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [leogr]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


ProfileCache: prepare_profile_cache checks for valid object template

Depends on #125
Fixes #126

Thanks for this. I have one minor comment: I think it'd be good to have a doc somewhere (can be on the web site and thus be done outside this PR) documenting how Perl::Critic::Policy::Quattor::UseCAFProcess is supposed to be used.
Also I'd suggest to change the title to something reflecting more the contents of the PR where the prepare_profile_cache() checks seem only one part of the PR...

@jouvin wrt more code than title, this is based on #125. i'll rebase.
wrt to using critic, once new maven tools are released, we can switch to tqu style testing, see eg https://github.com/quattor/CCM/pull/160, which includes critic.

@jrha another one best included before new build-tools are released


Comparability/type assertion failure when using enums and underlying literals

The regression reported here can be traced back to #53192. The minimal~ repro case for it is this:
enum AutomationMode {
  NONE = "",
  TIME = "time",
  SYSTEM = "system",
  LOCATION = "location",
}

interface ThemePreset {
  id: string;
}

interface Automation {
  mode: AutomationMode;
}

interface UserSettings {
  presets: ThemePreset[];
  automation: Automation;
}

interface ExtensionData {
  settings: UserSettings;
}

export function getMockData(): ExtensionData {
  return {
    settings: {
      presets: [],
      automation: {
        mode: "",
      },
    } as UserSettings,
  }
}

TS playground
Originally posted by @Andarist in https://github.com/microsoft/TypeScript/issues/53192#issuecomment-1476171453

Isn't it intentional that string literals are not assignable to string-based enums, even if they match one of the enum members?

It's about comparability and it seems that this type of conversion is valid in such a context, for example, this is OK:
const foo = "" as AutomationMode

Ah, I missed the type assertion as UserSettings so it just looked like an assignability failure, which was expected.

The fix here is to exclude the comparable relation from the optimization in #53192. I will put up a PR.


JAMES-3962 JMAP Email/set: specific headers for body parts

09:34:32,937 [ERROR] Failed to execute goal io.github.evis:scalafix-maven-plugin_2.13:0.1.6_0.9.34:scalafix (scala-check-style) on project james-server-jmap-rfc-8621: Scalafix invoked with errors. Check logs for details. -> [Help 1]


RTDB.setQueryIndex() fails with "security rules is not a valid JSON"

Hi, big thanks for all the hard work on this library.
I was going through the examples when RTDB/DataRetaining yielded this.
Describe the bug
Connecting to Wi-Fi..................
Connected with IP: <IP_ADDRESS>

Firebase Client v4.4.8

Token info: type = id token (GITKit token), status = on request
Token info: type = id token (GITKit token), status = ready
Set query index in database rules... security rules is not a valid JSON
Push data... ok
Delete history data older than 10 minutes... Index not defined, add \".indexOn\": \"ts\", for path \"/test/log\", to the rules
Push data... ok

etc.
To Reproduce
examples/RTDB/DataRetaining/DataRetaining.ino, with appropriate WiFi and Firebase secrets.
Expected behavior
Database rules modified succesfully.
IDE and its version:
Arduino CLI 0.32.2 via VS Code Arduino extension
ESP8266 Arduino Core SDK version
3.1.2
Additional context
Board: WEMOS D1 mini (clone?) based on ESP-12F

It's not issue. It is library intended error to warn user that his security rule can't be processed.
As the error shown you should make your security rules valid JSON before using this function.

Copy your security rules and paste into this tool and check what causes your rules invalid.
https://jsonformatter.curiousconcept.com/

It seems as if you assume my rules are actually invalid JSON. I don't think that holds.
The initial report used these rules
{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}

Even if I change them to
{
  "rules": {
    "test": {
      "log": {
        ".indexOn": "ts",
        ".read": "auth != null",
        ".write": "auth != null",
      }
    }
  }
}

Said example still gives me the error:
Connecting to Wi-Fi........
Connected with IP: <IP_ADDRESS>

Firebase Client v4.4.8

Token info: type = id token (GITKit token), status = on request
Token info: type = id token (GITKit token), status = ready
Set query index in database rules... security rules is not a valid JSON
Push data... ok
Delete history data older than 10 minutes... ok
Push data... ok
Push data... ok
Delete history data older than 10 minutes... ok
Push data... ok

etc.

I confirm that everything is ok.
Result of DataRetaining example
Connecting to Wi-Fi.....
Connected with IP: <IP_ADDRESS>

Firebase Client v4.4.8

Token info: type = id token (GITKit token), status = on request
Token info: type = id token (GITKit token), status = ready
Set query index in database rules... ok
Push data... ok
Delete history data older than 10 minutes... ok
Push data... ok
Push data... ok
Delete history data older than 10 minutes... ok
Push data... ok
Push data... ok
Delete history data older than 10 minutes... ok
Push data... ok
Push data... ok

Result of DataFilter example
Connecting to Wi-Fi.....
Connected with IP: <IP_ADDRESS>

Firebase Client v4.4.8

Token info: type = id token (GITKit token), status = on request
Token info: type = id token (GITKit token), status = ready
Push json... ok
Push json... ok
Push json... ok
Push json... ok
Push json... ok
Push json... ok
Push json... ok
Push json... ok
Push json... ok
Push json...
Push json... ok
Push json... ok
Push json... ok
Push json...
Push json... ok
Push json... ok
Push json... ok
Push json...
Push json... ok
Push json... ok
Push json... ok
Push json...
Push json... ok
Push json... ok
Push json... ok
Push json...
Push json... ok
Push json... ok
Push json... ok
Push json...

Get json... ok
Pretty printed JSON data:
{
        "-NeOKGyEM5gAZvNONNaG": {
                "Data1": 20,
                "Data2": 119
        },
        "-NeOKGzIEeIRUOta6USe": {
                "Data1": 21,
                "Data2": 120
        },
        "-NeOKaWwgfi0mHEBO41J": {
                "Data1": 19,
                "Data2": 118
        },
        "-NeOKaY3hEWyaISGMmop": {
                "Data1": 20,
                "Data2": 119
        },
        "-NeOKaZHwzX88lAqFJ8H": {
                "Data1": 21,
                "Data2": 120
        },
        "-NeOM41OatWnYwXGLIP-": {
                "Data1": 19,
                "Data2": 118
        },
        "-NeOM42NNlmOEXJZ6BbV": {
                "Data1": 20,
                "Data2": 119
        },
        "-NeOM43oGLOJvSDM-FTf": {
                "Data1": 21,
                "Data2": 120
        }
}
Iterate JSON data:

0, Type: object, Name: -NeOKGyEM5gAZvNONNaG, Value: {"Data1":20,"Data2":119}
1, Type: object, Name: Data1, Value: 20
2, Type: object, Name: Data2, Value: 119
3, Type: object, Name: -NeOKGzIEeIRUOta6USe, Value: {"Data1":21,"Data2":120}
4, Type: object, Name: Data1, Value: 21
5, Type: object, Name: Data2, Value: 120
6, Type: object, Name: -NeOKaWwgfi0mHEBO41J, Value: {"Data1":19,"Data2":118}
7, Type: object, Name: Data1, Value: 19
8, Type: object, Name: Data2, Value: 118
9, Type: object, Name: -NeOKaY3hEWyaISGMmop, Value: {"Data1":20,"Data2":119}
10, Type: object, Name: Data1, Value: 20
11, Type: object, Name: Data2, Value: 119
12, Type: object, Name: -NeOKaZHwzX88lAqFJ8H, Value: {"Data1":21,"Data2":120}
13, Type: object, Name: Data1, Value: 21
14, Type: object, Name: Data2, Value: 120
15, Type: object, Name: -NeOM41OatWnYwXGLIP-, Value: {"Data1":19,"Data2":118}
16, Type: object, Name: Data1, Value: 19
17, Type: object, Name: Data2, Value: 118
18, Type: object, Name: -NeOM42NNlmOEXJZ6BbV, Value: {"Data1":20,"Data2":119}
19, Type: object, Name: Data1, Value: 20
20, Type: object, Name: Data2, Value: 119
21, Type: object, Name: -NeOM43oGLOJvSDM-FTf, Value: {"Data1":21,"Data2":120}
22, Type: object, Name: Data1, Value: 21
23, Type: object, Name: Data2, Value: 120

Database security rules.
{
	"rules": {
		".read": "auth != null",
		".write": "auth != null",
		"test": {
			"log": {
				".indexOn": "ts"
			},
			"push": {
				".indexOn": "Data2"
			}
		}
	}
}

Please make sure you set the SSL buffer properly.
https://github.com/mobizt/Firebase-ESP-Client/blob/4622d57db62811db4e66f2cafd3831d1ff1b01c4/examples/RTDB/DataRetaining/DataRetaining.ino#L122-L124

Oh, I see... trailing commas are not JSON in the RFC 8259 sense :facepalm:
README, under The authenication credentials and prerequisites:

The Firebase RTDB security rules are JSON-based rules which it should valid to used with this library RTDB functions that involved the security rules modification and reading, otherwise the rules wont be changed or read by these functions.

Clarifying this might benefit future users stumbling on this. How about something like

The Firebase RTDB security rules are JSON-based rules modifiable through the Firebase console and the REST API. While the Firebase console defaults to a less strict JSON syntax, In order to read or modify the rules with this library, rules already present need to adhere to RFC 8259, i.e. no trailing commas allowed.

Your database rules are invalid in FirebaseJson implementation and not allow incomplete, extra character other than key-value pare that should be and well-formed data.
I'm not argue with you on that loose type and bad form JSON standard.

Security rules are similar to JSON but not JSON especially in Firestore then we can't assume it to be JSON but the rules for RTDB are simpler and are very similar to JSON and if user need to use the function to modify rules, he should make his rules valid JSON.

Alright, In hindsight, I should have created a discussions thread instead to figure out the conflicting comma.
FWIW, I still think clarifying the README would be beneficial, especially as the screenshots1, 2 depict the unfortunate decision on Firebase's part to default to nonstandard JSON. Although I now understand the intended meaning, the sentence I quoted above does not parse very well according to my understanding of the English language.
Maybe all RTDB examples operating on the security rules could also have a comment mention that the default rules provided by Firebase will result in an error.
If you think these points are worth acting on, I can definitely donate a bit of my time to make a PR.
Thanks for your quick responses and my apologies for the hassle.

I appreciate your time for contribution.
The new version 5 is coming with breaking changes which affected to the feature you used.
The new asynchronous operation, code size, program footprint and variety of functions that provided by the library development in the past are the keys for code refactoring and cutting in version 5.
Here is the information of all changes that break the old version compatibility and will be stated on Readme.
Breaking Changes from version 4
To keep support only necessary options and features that provided by Firebase which requeces the program footprint, there are some functions removed from this library in version 5.
Note that, the following changes applied for Firebase-ESP-Client,  Firebase-ESP8266 and Firebase-ESP32 libraries.
The functions removal.

The MultiPath Streaming in RTDB.
beginMultiPathStream, setMultiPathStreamCallback, and removeMultiPathStreamCallback

The Streaming in RTDB.
setStreamCallback and removeStreamCallback

The backup and restore in RTDB.
backup and restore

The error queue and its data type in RTDB.
setMaxErrorQueue, saveErrorQueue, deleteStorageFile, restoreErrorQueue, errorQueueCount, isErrorQueueFull, processErrorQueue, getErrorQueueID, isErrorQueueExisted, beginAutoRunErrorQueue, endAutoRunErrorQueue, and clearErrorQueue

The security rules download, upload and set the read/write rules in RTDB.
getRules, setRules and setReadWriteRules.

The query index set/remove in RTDB.
setQueryIndex and removeQueryIndex

The anync functions in RTDB.
setPriorityAsync, pushAsync, pushIntAsync, pushFloatAsync, pushDoubleAsync, pushBoolAsync, pushStringAsync, pushJSONAsync, pushArrayAsync, pushBlobAsync, pushFileAsync, pushTimestampAsync, setAsync, setIntAsync, setFloatAsync, setDoubleAsync, setDoubleAsync, setBoolAsync, setStringAsync, setJSONAsync, setArrayAsyn, setBlobAsync, setFileAsync, setTimestampAsync, updateNodeAsync, and updateNodeSilentAsync

The node deletion in RTDB.
deleteNodesByTimestamp

FireSense add on in RTDB.

Old API in FCM for ESP32 and ESP8266 version library.
fcm.begin, fcm.addDeviceToken, fcm.removeDeviceToken, fcm.clearDeviceToken, fcm.setNotifyMessage, fcm.addCustomNotifyMessage, fcm.setDataMessage, fcm.clearDataMessage, fcm.setPriority, fcm.setCollapseKey, fcm.setTimeToLive, fcm.setTopic, fcm.getSendResult, sendMessage, broadcastMessage and sendTopic

The async function in Cloud Firestore.
runDeployTaskscommitDocumentAsync

Old API in RTDB for ESP32 and ESP8266 version library.
setReadTimeout, setwriteSizeLimit, pathExisted, pathExist, getETag, getShallowData, enableClassicRequest, setPriority, getPriority, push, pushInt, pushFloat, pushDouble, pushBool, pushString, pushJSON, pushArray, pushBlob, pushFile, pushTimestamp, setInt, setFloat, setDouble, setBool, setString, setJSON, setArray, setBlob, setFile, setTimestamp, updateNode, updateNodeSilent, get, getInt, getFloat, getDouble, getBool, getString, getJSON, getArray, getBlob, getFile, downloadOTA, deleteNode, beginStream, readStream, runStream, and setMaxRetry
Note that these functions should be called from RTDB member class of Firebase class and use the pointer to FirebaseData, FirebaseJson and FirebaseJsonArray in the functions.

The legacy functions in FirebaseData
intData, floatData, doubleData, boolData, stringData, jsonString, jsonObject, jsonObjectPtr, jsonArray, jsonArrayPtr, blobData, and fileStream

The external Client functions.
setExternalClient and setExternalClientCallbacks

The enums and struct removal
This removal is for proper naming.

The fb_esp_rtdb_data_type enums in RTDB
fb_esp_rtdb_data_type_null, fb_esp_rtdb_data_type_integer, fb_esp_rtdb_data_type_float, fb_esp_rtdb_data_type_double, fb_esp_rtdb_data_type_boolean, fb_esp_rtdb_data_type_string, fb_esp_rtdb_data_type_json, fb_esp_rtdb_data_type_array, fb_esp_rtdb_data_type_blob, and fb_esp_rtdb_data_type_file

The fb_esp_rtdb_upload_status enums in RTDB
fb_esp_rtdb_upload_status_error, fb_esp_rtdb_upload_status_unknown, fb_esp_rtdb_upload_status_init fb_esp_rtdb_upload_status_upload, and fb_esp_rtdb_upload_status_complete

The fb_esp_rtdb_download_status enums in RTDB
fb_esp_rtdb_download_status_error, fb_esp_rtdb_download_status_unknown, fb_esp_rtdb_download_status_init fb_esp_rtdb_download_status_download,and fb_esp_rtdb_download_status_complete

The fb_esp_cfs_upload_status enums in Cloud Firestore
fb_esp_cfs_upload_status_error, fb_esp_cfs_upload_status_unknown, fb_esp_cfs_upload_status_init fb_esp_cfs_upload_status_upload,fb_esp_cfs_upload_status_complete, and fb_esp_cfs_upload_status_process_response

The fb_esp_gcs_upload_status enums in Google Cloud Storage
fb_esp_gcs_upload_status_error, fb_esp_gcs_upload_status_unknown, fb_esp_gcs_upload_status_init fb_esp_gcs_upload_status_upload, and fb_esp_gcs_upload_status_complete

The fb_esp_gcs_download_status enums in Google Cloud Storage
fb_esp_gcs_download_status_error, fb_esp_gcs_download_status_unknown, fb_esp_gcs_download_status_init fb_esp_gcs_download_status_download, and fb_esp_gcs_download_status_complete

The fb_esp_fcs_upload_status enums in Firebase Storage
fb_esp_fcs_upload_status_error, fb_esp_fcs_upload_status_unknown, fb_esp_fcs_upload_status_init fb_esp_fcs_upload_status_upload, and fb_esp_fcs_upload_status_complete

The fb_esp_fcs_download_status enums in Firebase Storage
fb_esp_fcs_download_status_error, fb_esp_fcs_download_status_unknown, fb_esp_fcs_download_status_init fb_esp_fcs_download_status_download, and fb_esp_fcs_download_status_complete

The fb_esp_functions_operation_status enums in Cloud Functions for Firebase
fb_esp_functions_operation_status_unknown, fb_esp_functions_operation_status_generate_upload_url, fb_esp_functions_operation_status_upload_source_file_in_progress fb_esp_functions_operation_status_deploy_in_progress, fb_esp_functions_operation_status_set_iam_policy_in_progress, fb_esp_functions_operation_status_delete_in_progress, fb_esp_functions_operation_status_finished and fb_esp_functions_operation_status_error

Note that, you can replace the enums fb_esp_xxx with firebase_xxx.

The StorageType struct for ESP32 and ESP8266 version library.
StorageType::UNDEFINED, StorageType::FLASH and StorageType::SD

Note that, mem_storage_type_undefined, mem_storage_type_flash, and `mem_storage_type_sd was used instead.
The platform and its features removal.
Because of no benefit we gain from using FreeRTOS in Raspberry Pi Pico platform in this library and limited resources and C++ functions supported in AVR platform, the following are changes.

FreeRTOS removal in Raspberry Pi Pico in Google Cloud Storage upload task.

FreeRTOS removal in Raspberry Pi Pico in Functions for Firebase task.
createFunction and runDeployTasks

The std::vecor was used to represent the dynamic array and it breaks the AVR platform supports.


Clarify what's new and test of concatenating anonymous dimensions.

Patrick and I tripped over this before I left on holiday, so I thought this clarification was needed.

I have added a comment to the concatenate methods as per @pelson comment
(The build is just failing due to a time out error so this will need to restarted)

Thanks @lbdreyer

And thank you @pelson for merging it :smile:


Fix config hint

There is no need to specify rootPath for helixPropertyStore. This path
will be automatically composed by taking the cluster name. This PR
removes the comment of root path config to avoid confusion.
Test: no need to test

Codecov Report

Merging #755 into master will increase coverage by 0.01%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master     #755      +/-   ##
============================================
+ Coverage     65.73%   65.74%   +0.01%
  Complexity     3887     3887
============================================
  Files           336      336
  Lines         25766    25766
  Branches       3224     3224
============================================
+ Hits          16936    16939       +3
+ Misses         7922     7917       -5
- Partials        908      910       +2

Impacted Files
Coverage Δ
Complexity Δ

...c/main/java/com.github.ambry.network/Selector.java
78.48% <0%> (-3.59%)
44% <0%> (-1%)

...java/com.github.ambry.router/GetBlobOperation.java
88.32% <0%> (-0.27%)
30% <0%> (-1%)

...va/com.github.ambry.replication/ReplicaThread.java
71.91% <0%> (+0.45%)
48% <0%> (+1%)
:arrow_up:

.../main/java/com.github.ambry.store/HardDeleter.java
81.61% <0%> (+1.93%)
41% <0%> (+1%)
:arrow_up:

...b.ambry.network/BlockingChannelConnectionPool.java
66.22% <0%> (+2.19%)
8% <0%> (ø)
:arrow_down:

Continue to review full report at Codecov.

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

No needed


what makes txt file to be fail?

I have a new txt file uploaded to blob Storage, but I get an error from indexer state like this,
'Document '{blob Path}' has unsupported content type 'unsupported'.
I have no idea why it fail and generating this error. Any invalid list of char that Indexer/Index supported?

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

ID: 63559d85-a673-b5cb-6ac0-465c988774c3
Version Independent ID: 3cfbd312-0eb4-d2a4-0819-566a197d6475
Content: Indexing Azure Blob Storage with Azure Search | Microsoft Docs
Content Source: articles/search/search-howto-indexing-azure-blob-storage.md
Service: search
GitHub Login: @chaosrealm
Microsoft Alias: eugenesh

@mvpkenlin Thank you for the valuable feedback,we are investigating the issue.

@mvpkenlin There are files that are not supported in blob indexing, Plain text files are indeed supported, (Link can be seen here) the .txt file type is not specifically mentioned, I will assign it to the author for review and confirmation.

Hi @mvpkenlin this is somewhat unexpected, and i would need to take a look at the telemetry to see what happened. Could you let me know your search service name and indexer name?
Also, it would be interesting to look at your document. If possible, please share with me.
You can reach me directly at eugenesh at the usual Microsoft domain.
Thanks!

Hi @Eugene, I have sent you email at microsoft about the info.
@Adam-Smith-MSFT    I cannot index html file as well. Is there any special character that inside the html will stop the indexer to be indexed?

@mvpkenlin  I am going through our open issues backlog to determine whether additional follow up is warranted.  Is there anymore work to be done here, or can we close this issue?

#please-close #please-sign-off


Possible sort issue for times approaching 1970

When base-encoding the bigint:
Since the "left" 64 bits are using milliseconds since epoch, and are technically allowed to go up to a value of (Long/MAX_VALUE), and also go down to zero, the character count of the final encoded bigint value can be as many as 22, but also much lower (if I've interpreted the source correctly).
Assuming the goal is always ensuring proper sort order, the value needs to left-padded with "0"s to the max character length (22 if I'm not mistaken).

Currently the epoch is constructed from an arbitrary point in time (much later than 1970--somewhere close in time to when the process starts, in most cases). In other words, we aren't using the UNIX epoch anymore.
Adding padding doesn't sound like a bad idea if indeed the BigInt isn't already padded. I'm curious if there's a particular source that describes this behavior?

Just looking at the 64 bit timestamp, currently it would result in 7 base-62 encoded characters.
It won't be until 2082 it will jump to 8 characters long (from the current 7 characters):
(-> (java.time.Instant/parse "2082-01-01T00:00:00Z")
(.toEpochMilli)
(base62-encode)
count)
;;=> 8
I haven't checked it out for the full bytebuffer at 128 bits to see when the next digit appears, but it is possible it is a ways out. So your call.
If someone chooses this flake format and needs to generate past or future ids (for whatever reason) this issue increases.
Your base encoding function generates ids based on number size only, so nothing is padded.

Perhaps the caller should pad the input? It might be dangerous to assume the padding should be implicitly padded. What do you think?

I think people will assume the encoded id maintains sort order, so I'd pad it.
I'd let them not pad it if they don't want the sort order guarantee.
The padding (assuming it is with zeros) won't affect decoding the ID back into the original bigint, so the integrity of the id is not affected.

FWIW, here is a pad function I use... I'm sure there is an optimization in there to be had:
(defn pad-left
  "Pad a string s to a length of l with character c."
  [s l c]
  (-> (- l (count s))
      (repeat c)
      (concat [s])
      (#(apply str %))))

What length is the correct length to pad to in your opinion? My understanding is BigIntegers don't have a MAX_VALUE and instead are backed by an array of ints and thus their size limitations are correlated with available memory.

Your id is 128 bits, so 22 characters.
(-> (Math/pow 2 128)
    (base62-encode)
    (count))
;;=> 22

Ah right, of course! Long day. I suppose after whatever point the BigInteger exceeds that length the IDs no longer work, but in theory that's far enough into the future to not matter.

Yes, very very far into the future, which is why I mentioned before you can safely add precision greater than millis to your first 64 bits, if you wanted and were OK with a change to your ids... but at this point seems you are making some changes anyhow. :)

Right, I think increasing the precision is fine, since in theory it doesn't break anything. Moving around the bits on the other hand does. :)
By the way, I think the current character count varies from your estimate: generating IDs locally and coercing them to BigIntegers yields character counts of 32.
user=> (count (str (flake/flake->bigint (flake/generate!))))
32

That is the length of your integer, and you should have no issues with the integer sort order.
When you base-62 encode the integer, it is the resulting string sort order that can become incorrect.
Per your example, this should apply (I didn't test it though):
(count (encode/base62-encode (flake/generate!)))
;;=> 22

Doesn't it defeat the purpose of encoding if we end up making the encoded ID longer?

I guess what I'm not clear about here is how we lose lexicographic ordering if the ID becomes longer (or shorter) relative to the timestamp bits?
I don't think I've understood your original report and possibly it's just too late in the day and I'm missing the obvious. :)

I'm only referring to the base-62 encoded flake id, not the bigint which should sort fine.
The smaller your bigint, the shorter the characters... following is an example.
(base62-encode 10)
;;=> "a"

(base62-encode 100)
;;=> "1C"

(sort ["1C" "a"])
;;=> ("1C" "a") ;;  wrong!!

(sort ["1C" "0a"])
;;=> ("0a" "1C") ;;  right!! - padded with a "0" to be same length.

Okay, so your original issue was that if a timestamp occurred around 1970 IDs, specifically BigIntegers, would be short in length and thus sort incorrectly.
Makes sense and yes I agree that it's probably worth padding. :)


Can't use MagicAPI

Hi i instantiate the api with this line:
MagicAPI api = new MagicAPI();
But is not working:
MagicAPI is abstract; cannot be instantiated
MagicAPI api = new MagicAPI();
How is the suitable way ? Thank you !

See instructions here:
https://github.com/elBukkit/MagicPlugin/blob/master/MagicAPI/README.md

Thanks !


Feature Request: Doorbell D235 - ring button pressed - event

Is your feature request related to a problem? Please describe.
I have a D235 door bell.
https://www.tp-link.com/en/home-networking/cloud-camera/tapo-d235/
The video is working with a special firmware version:
https://community.tp-link.com/en/smart-home/forum/topic/683314
What am I currently (actually the only thing) missing is an event when the door bell button is pressed.
Am I missing something? What am I doing wrong?
Describe the solution you'd like
An entity or event that can be used in automations when the physical button is pressed
Describe alternatives you've considered
Dont know any
Additional context
Thanks for your work

See https://github.com/JurajNyiri/HomeAssistant-Tapo-Control/issues/397

In my opinion its not the same issue.
This camera can also be cable powered be and then its always one.
The camera function is working on this with a special firmway.
Anyway, I sent the model back and bought a reolink door bell
Thanks a lot for this integration (which I also use on cameras).
Thanks for your free time and free work.
I think its a shame from Tapo!!
They should at least, send you each model for free and if you get it fully integrated in your "plugin" you should receice a money bonus from them.


enable 2h equipping automatically

Description:
Original PR: #2447
Author @Fexbot
I believed 6 months was long enough to recode this and fix any errors (mainly duping items)
The review was asked for in August and not seen movement
Allows the equipping of 2H items without having to unequip both weapon and shield
Still can only equip a weapon or a shield if wielding a 2h but a lot less tedious until we equip multiple items at once
Changes:
Changed the order of checking if an item can be equipped (Stackable, Stats and Wildy check) prior code had these after allowing item duping
Added associated logging messages already in the code to the new section
Check whether the item to be equipped is 2h, check if there's a weapon and shield then return them to the bank
Check whether the item to be equipped is a shield, weapon or 2h and if currently wielding 2h, return equipped 2h and equip a new item
Other checks:
Manually tested with godswords,inq mace,ely, arma cbow and tbow (high-value items most likely to be raged about if an error in code)

[x] I have tested all my changes thoroughly.
example:

Yes, you are right this feature was removed because of a dupe.
I don't remember exactly how it was performed, do you?
We need to be absolutely sure here, if you remember how the dupe was done, please let me know (Cyr) via pm on discord and we can look into this thoroughly.

Updated to meet new structure requirements.
Had a convo with Cyr regarding duping. (All scenarios were already fixed in the first commit)
Personally haven't found any duping errors since the first commit but would like additional testing by others to look for errors


Fix Proprietary.txt License File Missing When Loading the License Page

Excluded the file Proprietary.txt from the .gitignore list of the repository.ui project as it is not fetched at build time (like the other contents of the assets/licenses folder).

[x] Ensure that you followed http://eclipse.github.io/winery/dev/ToolChain#github---prepare-pull-request. Especially, we require a single commit
[x] Ensure that the commit message is a good commit message
[ ] Ensure to use auto format in all files
[x] Ensure that you appear in NOTICE at Copyright Holders
[ ] Tests created for changes
[ ] Documentation updated (if needed)
[ ] Screenshots added (for UI changes)

Important notice: license files other than Proprietary.txt are fetched at build time by a maven plugin. Thus, if the UI reports them missing, then mvn package -DskipTests is required.


Allow passing metadata to LangChainAgentNode._run_single

Description

Allows passing arbitrary metadata in to the agent.
Update a few imports to lower the number of deprecation warnings

Closes #1706
By Submitting this PR I confirm:

I am familiar with the Contributing Guidelines.
When the PR is ready for review, new or existing tests cover these changes.
When the PR is ready for review, the documentation is up to date with these changes.

/merge


Deprecating @static and what to replace it with

(Please let me know if any of this is unclear)
Continuing on #1429, I have a PR that is close to being ready to deprecate @static. If we merge the PR, this is what the state of static will/should be:
static<n> and promotable

static<n> can go on groups, control, and components to provide a guarantee for static timing (this is unchanged from before). When placed on a component, it provides no done signal. You assert the go signal on the 0th cycle, and get the result on the nth cycle.
@promotable(n) can go on groups, control, and go ports of components to provide a hint for static timing. This provides no timing guarantees. When placed on components, the interface is still dynamic: you assert the go  signal until the done signal is high, at which point the result is ready. Because @promotable is just a hint, you can not, for example, static invoke a component even if it has a @promotable attribute.

@interval for double-duty
However, we have some components (like registers) which we would like to be able to serve double-duty (can be invoked in both static and dynamic contexts). We also (I think?) want Calyx components, not just primitives, to be able to serve double-duty as well. Therefore, we introduce a new attribute, @interval(n), which can be placed on the @go ports of registers, multipliers, and any other components we wish to be capable of double duty. The interface for @interval(n) is the following:

Assert go for cycles [0,n). On the nth cycle, the done signal will be high and the output will be ready.

This has a few consequences:

For any Calyx component that has @interval(n), the control must be static<n> (it can't just be @promotable, since @promotable will be ignored). There will be a well-formedness check to enforce this.
For any Calyx component that has @interval(n), you can static invoke it. This allows us to static invoke registers, for example. [^1].

loose ends
The way static promotion currently works is that, it upgrades dynamic components to static<n> components, and adds an attribute @promoted to it, which tells the component to provide a done signal, since the promoted component still may be used in dynamic contexts. Here is the interface that these components obey:

You assert go on the 0th cycle, and then on the nth cycle, the done signal will be high and the output will be ready.

A few notes:

This interface is purely internal, in the sense that the compiler is the only one who can create this interface. Frontends cannot use this interface.
We like this interface, because it avoids a large fanout for the go signal (i.e., the go signal doesn't have to guard every assignment in the component anymore).
Right now, this is how we compile @interval(n) components "under the hood". In other words, we treat @interval components like a component we just promoted to static (i.e. we treat it like a static<n> that still must produce a done signal).
(4) is a subset of (3) (as well as (1) and (2)): if a component obeys (4), then it will also obey (3). This is why this strategy even works. All of the existing dynamic or static invocations of a component compiled using (4) will still work even if they are invoked thinking about rule (3).
It seems that, long term, we may(?) want to get rid of (3) entirely and only use (4) as our interface for double-duty. But right now, all of the primitives (std_mult, std_reg, etc.) use (3) as their interface. For now, we are only using (4) as an "under the hood" optimization to prevent large fanouts of go signals in certain components.

[^1]: When compiling these static invoke comp, we guard comp.go = %0 ? 1 if we have a static<n> comp and we guard comp.go =1 if we have an @interval comp.

We also (I think?) want Calyx components, not just primitives, to be able to serve double-duty as well

One tricky part with this will be supporting early-resetting in such components. You'd basically end up needing to generate shift-register-based FSMs instead of the normal single-register FSMs we generate.

Well, one of the problems with early resetting is that we cant support both early resets and done signals right? If this is not true the. i'm wrong.
If this is true, then we need some other mechanism to generate both early resets and done signals which shift registers would do.

Well, one of the problems with early resetting is that we cant support both early resets and done signals right?

We currently support this similar to how we compile the wrapper for static control, using a signal_reg to distinguish between different "FSM=0" states (i.e., use a signal_reg to distinguish whether FSM=0 bc we just reset, or FSM=0 bc we are not executing).
The exact logic for how we set the signal_reg is a little bit different than with a static control wrapper, since we need to be able to support immediate re-triggering of components (i.e., we want to be able to re-trigger the component during the cycle that the component's done signal is high), but I'm pretty sure we have a way that works.

@calebmkim is this considered resolved with #1897

Closed with #1897


Can see camera video on web and Android APP but cannot on iOS APP, any suggestions?

Can see camera video on web and Android APP but cannot on iOS APP, any suggestions?
Flutter 3.3.4
flutter_webrtc: ^0.9.11
Xcode 13.4

Im facing same issue. Could you find a solution?