setup read/write implementation for Drive Motor Controllers

Need to decide what comm protocol we use to talk to the motor controllers. We need to read all information that the motor controller collects and be able to write configuration and commands.
This will be done in the form of a C++ driver library for our roboteq HDC2450.
Some things that will be useful for writing the driver:
Connectivity Modes Available: https://www.roboteq.com/index.php/technology-menu/connectivity-menu
Datasheet: https://www.roboteq.com/index.php/docman/motor-controllers-documents-and-files/documentation/datasheets/hdc24xx-datasheet/60-hdc24xx-datasheet/file
CAN Manual for Roboteq (there are 4 potential can protocols to use): https://www.roboteq.com/index.php/docman/motor-controllers-documents-and-files/documentation/user-manual/649-can-networking-manual/file
Other useful Links: https://www.roboteq.com/index.php/component/virtuemart/337/hdc2450-259-detail?Itemid=970

closed by #24


Feature - Find/filter applications based on fields and keywords

Fixes #103
Changes made

FindCommand now takes in Predicate instead of NameContainsKeywordsPredicate, this applies to the private predicate field stored as well

find command works on these fields: name, jobtitle, tag, priorityTag, applicationStatusTag, all which takes in 1 parameter only (last if multiple) except for tag

Tag class toString() does not have [] anymore

more descriptive error message for tag incorrect inputs

user guide changed to accommodate for new find command, fixed some typos along the way

Codecov Report

Merging #128 (896252d) into master (9a8b3c4) will decrease coverage by 3.97%.
The diff coverage is 17.33%.

@@             Coverage Diff              @@
##             master     #128      +/-   ##
============================================
- Coverage     69.09%   65.12%   -3.98%
- Complexity      444      451       +7
============================================
  Files            81       85       +4
  Lines          1521     1640     +119
  Branches        174      192      +18
============================================
+ Hits           1051     1068      +17
- Misses          408      505      +97
- Partials         62       67       +5

Impacted Files
Coverage Δ

...application/JobTitleContainsKeywordsPredicate.java
0.00% <0.00%> (ø)

...odel/application/TagContainsKeywordsPredicate.java
0.00% <0.00%> (ø)

.../seedu/address/logic/parser/FindCommandParser.java
22.22% <20.75%> (-77.78%)
:arrow_down:

...java/seedu/address/logic/commands/FindCommand.java
100.00% <100.00%> (ø)

src/main/java/seedu/address/model/tag/Tag.java
65.38% <100.00%> (ø)

src/main/java/seedu/address/model/Model.java
66.66% <0.00%> (-33.34%)
:arrow_down:

...seedu/address/model/application/InterviewSlot.java
73.07% <0.00%> (-13.29%)
:arrow_down:

.../seedu/address/logic/parser/InternApplyParser.java
83.33% <0.00%> (-4.91%)
:arrow_down:

...a/seedu/address/model/application/Application.java
89.83% <0.00%> (-4.82%)
:arrow_down:

...va/seedu/address/logic/commands/CommandResult.java
84.21% <0.00%> (-4.03%)
:arrow_down:

... and 6 more

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 9a8b3c4...896252d. Read the comment docs.


Update CHANGELOG.md for v0.105.0 patches

Description:

Link to Splunk idea: <Link to Splunk idea, see https://ideas.splunk.com>
Testing:
Documentation:

Just a note, these changes will have to be manually moved to the release notes as well, since the tag for v0.105.0 has already been pushed.


fix: disallows dialog blocks that aren't properly indented; however, …

…this also changes how dialog options are parsed and will require substantial testing.
Fixes https://github.com/godot-escoria/escoria-issues/issues/335

Sorry for the delay!
Thanks for the fix 👍 !


No new image releases on new version

The github action pipeline fails with the new releases, because the goreleaser-action complains about Uppercase in the repo name.
this is because the project name starts with an Uppercase: "AbsaOSS"
see: https://github.com/AbsaOSS/external-dns-infoblox-webhook/actions/runs/12294943844/job/34311229219#step:9:1667

reverted back, see #30


netlify: remove unused variable from build script

Simplifies later changes, and we can more clearly see whether it breaks something.
Signed-off-by: Paul Jolly<EMAIL_ADDRESS>

For the record, the deploy log looked sensible:
https://app.netlify.com/sites/cue/deploys/63a1cf9c5309750008a40a5f
No mention of env, no complaints etc.


SDL2_ttf: 2.0.14 -> 2.0.15

Semi-automatic update generated by https://github.com/ryantm/nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/sdl2_ttf/versions.
meta.description for SDL2_ttf is: '"SDL TrueType library"'.

Checks done (click to expand)

built on NixOS

0 of 0 passed binary check by having a zero exit code.

0 of 0 passed binary check by having the new version present in output.

found 2.0.15 with grep in /nix/store/1grvy3flnw9in0sjs6wbyimz43v4477q-SDL2_ttf-2.0.15

directory tree listing: https://gist.github.com/bf67e3a4e74ebbf03b87fc8d20d13700

du listing: https://gist.github.com/f66d70b866ccdb93de3212c103b4a1d2

Rebuild report (if merged into master) (click to expand)

13868 total rebuild path(s)
4445 package rebuild(s)
4349 x86_64-linux rebuild(s)
3998 i686-linux rebuild(s)
1893 x86_64-darwin rebuild(s)
3628 aarch64-linux rebuild(s)
First fifty rebuilds by attrpath
AgdaSheaves
AgdaStdlib
EmptyEpsilon
SDL2_ttf
TotalParserCombinators
abiword
acgtk
acpica-tools
adapta-gtk-theme
adoptopenjdk-bin
adoptopenjdk-hotspot-bin-11
adoptopenjdk-jre-bin
adoptopenjdk-jre-hotspot-bin-11
aesop
afew
agdaBase
agdaIowaStdlib
agdaPrelude
ahoviewer
aj-snapshot
akonadi
akregator
alacritty
alarm-clock-applet
alfred
alibuild
aliceml
alot
alt-ergo
altcoins.bitcoin-abc
altcoins.bitcoin-classic
altcoins.bitcoin-unlimited
altcoins.bitcoin-xt
altcoins.bitcoind-abc
altcoins.bitcoind-classic
altcoins.bitcoind-unlimited
altcoins.bitcoind-xt
altcoins.dashpay
altcoins.dcrd
altcoins.dcrwallet
altcoins.ethabi
altcoins.go-ethereum
altcoins.go-ethereum-classic
altcoins.litecoin
altcoins.litecoind
altcoins.parity
altcoins.parity-beta
altcoins.polkadot
altcoins.zcash
amarok

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/1grvy3flnw9in0sjs6wbyimz43v4477q-SDL2_ttf-2.0.15 \
  --option binary-caches 'https://cache.nixos.org/ https://r-ryantm.cachix.org/' \
  --option trusted-public-keys '
  r-ryantm.cachix.org-1:gkUbLkouDAyvBdpBX0JOdIiD2/DP1ldF3Z3Y6Gqcc4c=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(r-ryantm's Cachix cache is only trusted for this store-path realization.)
Or, build yourself:
nix-build -A SDL2_ttf https://github.com/r-ryantm/nixpkgs/archive/61964bacd915be750f40577ccb1a4fa701e39562.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/1grvy3flnw9in0sjs6wbyimz43v4477q-SDL2_ttf-2.0.15
ls -la /nix/store/1grvy3flnw9in0sjs6wbyimz43v4477q-SDL2_ttf-2.0.15/bin

@GrahamcOfBorg build SDL2_ttf

@GrahamcOfBorg build SDL2_ttf


More examples for function contains

The documentation at http://jmespath.org/specification.html#contains demonstrates partial string matching on string input. The array input examples use only arrays of single character strings. This makes it unclear as to whether partial matching is done. I reality, partial matching is not performed against arrays. I'm not complaining about the matching. It makes sense to do it this way if you consider string input to be a "character array".
I'm providing a patch to improve clarity.

Fixed via #9


Update profile.html

issue #100 solved

@mayankgupta139 "pr_edit" id of the submit button here is misleading. Sounds like user trying to edit pr_link. So, change it to profile_edit or something like that.

@mayankgupta139 Checking Now


macOS Safari: App Not Available

I am trying to install KeeWeb Connect for Safari 16.1 on macOS 12.6.1. When I click the link under Installation on the ReadMe page it takes me to the Mac App Store where a modal popup states:

App Not Available
This app is currently not available in your country or region.

I am in Canada. Is this by design or a mistake?
Thanks.

bump... I'm getting the same issue, but in Asia

Bump - same here in Australia

Same for the German and the US store

Same for Finland


fix: fix failpoint tests and add to CI

This PR fixes the failure injection tests introduced in #1564 and modifies the CI workflow to run failiure injection tests.
Refer to a related PR or issue link (optional)
#1221

This PR depends on the bug fix in #2381


typeing arabic word inside input text field  on andriod phone not correclty

hi , how to correctly  typing Arabic word inside input text field  on android phone

Hello Moazatiani,
You could use flash.text.StageText to get user's Arabic inputs. by the way, we have other component that doesn't come in public. it perfectly works with default TextFiels of the Flash and Adobe Animate, that brings more functionalities as you can see bellow.

public static function setUp(textField:TextField,softKeyFormat:String = SoftKeyboardType.DEFAULT,convertArabic:Boolean=true,correctingArabicNumbers:Boolean = true,clearAfterClicked:Boolean = false,justShowNativeText:Boolean=false,editableNative:Boolean=true,controllStageChangesTo:Boolean=true,ReturnLable:String=ReturnKeyLabel.DEFAULT,onDoneFunction:Function=null):FarsiInputCorrection

If you think that could comes handy for you, you can contact me via Email.


feat: add CRD Application

What type of PR is this?
/kind feature

What this PR does / why we need it
Which issue(s) this PR fixes

Fixes #132
Special notes for your reviewer
https://shimo.im/docs/vVqRM4yWXWUXlj3y
curl -XPOST http://<IP_ADDRESS>:8080/chat --data '{"query":"hi, how are you?","response_mode":"blocking","conversion_id":"","app_name":"base-chat-english-teacher", "app_namespace":"arcadia"}'

{"conversion_id":"7c982664-b9f9-48e9-ac3b-494c14f0fcfa","message_id":"","message":"Greetings, how do you fare?","created_at":"0001-01-01T00:00:00Z"}

@CodiumAI-Agent /review

PR Analysis

🎯 Main theme: Adding new features and functionalities to the Arcadia project
📝 PR summary: This PR introduces new features and functionalities to the Arcadia project. It adds new CRDs for the application, implements the application controller, and adds new functionalities to the versioned dataset. It also includes changes to the GraphQL server and updates to various other components of the project.
📌 Type of PR: Enhancement
🧪 Relevant tests added: No
⏱ Estimated effort to review [1-5]: 5, because the PR is large and introduces significant new features and functionalities. It requires a thorough understanding of the project and the changes being introduced.

PR Feedback

💡 General suggestions: The PR introduces significant new features and functionalities to the project. It would be beneficial to include unit tests for these new features to ensure they work as expected and to catch any potential issues early. Additionally, it would be helpful to include more detailed comments in the code to explain the purpose and functionality of the new features, especially for complex functions.

 🤖 Code feedback:

relevant file: api/base/v1alpha1/versioneddataset.go
suggestion: Consider breaking down the function 'generateInheriedFileStatus' into smaller, more manageable functions. This can improve readability and maintainability of the code. [important]
relevant line: func generateInheriedFile

How to use
 Instructions

Tag me in a comment '@CodiumAI-Agent' and add one of the following commands:
/review: Request a review of your Pull Request.
/describe: Update the PR title and description based on the contents of the PR.
/improve [--extended]: Suggest code improvements. Extended mode provides a higher quality feedback.
/ask <QUESTION>: Ask a question about the PR.
/update_changelog: Update the changelog based on the PR's contents.
/add_docs: Generate docstring for new components introduced in the PR.
/generate_labels: Generate labels for the PR based on the PR's contents.
see the tools guide for more details.

To edit any configuration parameter from the configuration.toml, add --config_path=new_value.
For example: /review --pr_reviewer.extra_instructions="focus on the file: ..."
To list the possible configuration parameters, add a /config comment.

track remaining issue using https://github.com/kubeagi/arcadia/issues/308


[New game]: ESCAPE 👾

🎮 Game Request
Game logic and basic description

This game is a 2.5D puzzle platformer about wildlife that we leave behind.
We want to find our cubs and reach the Ark to save ourself!

Point down the features
Game points

There's no points for our actions, because it's a simulation based game where our job is to save the cubs

Select program in which you are contributing
GSSoC23
Code of Conduct

[X] I follow CONTRIBUTING GUIDELINE of this project.

Hey @0xabdulkhalid !
Thank you for raising an issue 💗
You can self assign the issue by commenting /assign in comment 😀
Make sure you follow CODE OF CONDUCT and CONTRIBUTING GUIDELINES 🚀
Don’t Forget to ⭐ our GameZone🎮
Make sure you join our Discord🕹

/assign

Hey @0xabdulkhalid 👋!
@kunjgit here,
We have this annoucement to make 📢!!
💥 Special Announcement:
It's the Call to all the designers 🔥 🎨
As you all know that GameZone has crossed 100 games 💗 , it's time that we all come up together and make the UI even better!!
We are redesigning the thumbnails, make sure you come up with the aesthetic and cool ideas 🚀 !
You are supposed to share the 4 different templates that can be used. Make sure that the size is: 1280 px X 720 px.
The frame should be such that there is only a single image of the game that's taking up the major portion of the frame. Any kind of text should not be there.
The design should be catchy and aesthetic! 🔥
Note: You are not supposed to create any issue right now for the same.
You have to share different designs right now in Discord  and Project Admin would be selecting one design and would be assigning the issue. After that only, you have to start working on it.

Hey @0xabdulkhalid ! Thank you so much for your raising the issue💗
It’s all yours, you can come anytime again and make some contributions! 🚀
Alone, we can do little, but together we can do so much! 😇


[AutoRelease] t2-network-2023-05-08-85932(can only be merged by SDK owner)

https://github.com/Azure/sdk-release-request/issues/2985
Live test success
https://dev.azure.com/azure-sdk/internal/_build?definitionId=1031
BuildTargetingString
azure-mgmt-network
Skip.CreateApiReview
true

issue link:https://github.com/Azure/sdk-release-request/issues/2985


Landing page base code and updated bootstrap.sh

Is the bootstrap better?
Landing page is still on progress

Is the bootstrap better? Landing page is still on progress

bootstrap not fixed yet, I will fix in a bit

LGTM!

wait a bit, I'll make a change

@sbshaun the README doesn't display the image, it is private image

@sbshaun the README doesn't display the image, it is private image

No? can you try to see in this link in Incognito mode? https://github.com/jobless-devs/Jobhub/tree/client-dev

@sbshaun the README doesn't display the image, it is private image

No? can you try to see in this link in Incognito mode? https://github.com/jobless-devs/Jobhub/tree/client-dev

can you compress the image, it's too large my laptop doesn't display literally

@sbshaun the README doesn't display the image, it is private image

No? can you try to see in this link in Incognito mode? https://github.com/jobless-devs/Jobhub/tree/client-dev

can you compress the image, it's too large my laptop doesn't display literally

it makes no sense 😂 it's 2MB, can you try the link on your phone? Even my phone works fine

@sbshaun the README doesn't display the image, it is private image

No? can you try to see in this link in Incognito mode? https://github.com/jobless-devs/Jobhub/tree/client-dev

can you compress the image, it's too large my laptop doesn't display literally

it makes no sense 😂 it's 2MB, can you try the link on your phone? Even my phone works fine

it doesn't work on my laptop but works on my phone, that's why I asked. But we can just ignore that for now
can you review my new commit? thankss


Feature request: create handler groups to reduce path replication

If you have three routes, all of which start with /api/1, you're left maintaining them separately:
goji.Get("/api/1/messages", getMessages)
goji.Post("/api/1/messages", postMessages)
goji.Get("/api/1/messages/:id", getMessageById)

It'd be nice to be able to group them:
goji.Group("/api/1", func(r goji.Router) {
    goji.Get("/messages", getMessages)
    goji.Post("/messages", postMessages)
    goji.Get("/messages/:id", getMessageById)
})

Thoughts?

Fun fact: you can already do this!
https://github.com/zenazn/goji/blob/master/example/main.go#L43-L60
(documenting this better is definitely on my TODO list: you're far from the first person to be confused about sub-routes)

Was just looking for a place to document this and couldn't find a suitable place. Thoughts?


New directory structure for brunch-based applications

I propose to switch to new format of apps. The new format could be like this:
Cakefile
README.md

/app/
  /assets/
    index.html
    images/
  collections/
  models/
  styles/
  routers/
  templates/
  views/
/build/ (generated by brunch)
  index.html (copied from app/assets)
  main.js (compiled & compressed)
  main.css (compiled & compressed)
  images/ (copied from app/assets)
/config/
  config.coffee
/test/
/vendor/
  scripts/
    backbone.js
    jquery.js
    console-helper.js
    underscore.js
  styles/
    normalize.css
    helpers.css

Brunch 0.10, (if it would implement new structure) could provide a simple automatic transfer from users of earlier versions.

Looks good, although being able to store images outside build and having brunch copy them into the appropriate build directory would be nice.
I'd like to be able to .gitignore the whole build directory and just trust brunch to generate it.

@rtfieldman good idea. Where do we need to store images then?
Does someone know where rails stores images?

This looks awesome.

+1 :)

I'm interested to know who is working on this. Any patches coming up : Þ ?

Thanks Paul. You da man.
On Oct 27, 2011, at 5:49 AM, Paul<EMAIL_ADDRESS>wrote:

Yea, I was working on this (and on 20 other issues), but then big bad deadline had crept in our startup. I'll continue work just after the deadline (which is next week).
--
Reply to this email directly or view it on GitHub:
https://github.com/brunch/brunch/issues/120#issuecomment-2542910

+1

+1
For stylesheets, what if you have 3rd party ones? Like bootstrap.css, would you just put it into the app/styles folder and it'll be added to main.css ?
Also how are the .styl files merged? Is it in alphabetical order? Or can you define the order somehow?

@quangv 3rd party stylesheets are not supported yet. They would be supported soon, and you would be able to define order of merging in config file.
Some thoughts about build targets:
A separate mobile.css means a separate build target. But it's basically a bad idea to have separate sites for mobile/desktop. Why? Have a look at great presentation -- building a future friendly web. So, what do you think, guys, should we add multiple build target support?

Hey Paul, thanks for the slides link. Finally took the time to go through it.
Just when we solved the multiple-browsers problem with libraries like jQuery, now we have to contend with multiple platform contexts like mobile + other devices...
great great... hopefully by the time our fridges and cars have itouch-screens node.js will have a solution for that...

This feature is ready by 90% on branch features/new-directory-structure for now.
Still not working:

coffeescript-based configs instead of YAML
separate scripts/styles in vendor directory

WIP

IMHO, app/views/templates is better because I think separation are great to manage lot of views for big apps.

@paulmillr - The branch looks good. Would be great to see the test / spec directory be on par with the app directory. It ought to have a 1:1 mapping, with equivalent sub-directories, so people can write a test class per app class and have them organized the same way.

@sbecker nice idea, I'll prototype it today.

works

@sbecker done!

I'm late to the game here, but would like to propose an alternative structure - particularly for the backbone structures.... I'm not sure if this could be optional or not.
This blog post demonstrates what I would like http://paulstovell.net/horizontal-vertical-project-structure
/app
  /assets
    index.html
    /images
  /modules
    /*modulename*
      /collections
      /models
      styles.styl
      module.router.coffee
      /templates
      /views
  style/main.styl
  app.router.coffee
  initialize.coffee

/build/ (generated by brunch)
  index.html (copied from app/assets)
  main.js (compiled & compressed)
  main.css (compiled & compressed)
  /images (copied from app/assets)
/config/
  config.coffee
/test/
/vendor/
  /scripts/
    backbone.js
    jquery.js
    console-helper.js
    underscore.js
  /styles/
    normalize.css
    helpers.css

This could also support nicer partial loading of relevant module in larger scale applications - because we're grouping our functionality - we could have a modulename.js file containing the templates, views, modules and collections relevant to that view, which would be loaded on demand, rather than as one big heavy load.

@bikkies decoupling is good, but I think this could be implemented simply by creating directories & files you want. So if someone wants to use this structure — brunch allows him to do this.


Searching videos within a YouTube user channel

I've been trying to download videos from a specific YouTube user, filtered by a simple search (the string used is in the description, not in the title), it works quite perfect in the YouTube website (not too many videos, by the way), but with youtube-dl I get all the videos of that user. I still don't get the search syntax of youtube-dl, and I don't see an specific documentation about it.
This is the simple syntax I'm using (I've used ytsearch and ytsearchall with the same results):
youtube-dl https://www.youtube.com/user/lyndapodcast "ytsearch:'David Booth'"
Am I using the wrong syntax? how is the right one?
Is this a youtube-dl issue? When will be fixed?
Please follow the guide below

You will be asked some questions and requested to provide some information, please read them carefully and answer honestly
Put an x into all the boxes [ ] relevant to your issue (like this: [x])
Use the Preview tab to see what your issue will actually look like

Make sure you are using the latest version: run youtube-dl --version and ensure your version is 2018.02.11. If it's not, read this FAQ entry and update. Issues with outdated version will be rejected.

[x] I've verified and I assure that I'm running youtube-dl 2018.02.11

Before submitting an issue make sure you have:

[x] At least skimmed through the README, most notably the FAQ and BUGS sections
[x] Searched the bugtracker for similar issues including closed ones
[x] Checked that provided video/audio/playlist URLs (if any) are alive and playable in a browser

What is the purpose of your issue?

[ ] Bug report (encountered problems with youtube-dl)
[ ] Site support request (request for adding support for a new site)
[ ] Feature request (request for a new functionality)
[x] Question
[ ] Other

The following sections concretize particular purposed issues, you can erase any section (the contents between triple ---) not applicable to your issue

If the purpose of this issue is a bug report, site support request or you are not completely sure provide the full verbose output as follows:
Add the -v flag to your command line you run youtube-dl with (youtube-dl -v <your command line>), copy the whole output and insert it here. It should look similar to one below (replace it with your log inserted between triple ```):
[debug] System config: []
[debug] User config: []
[debug] Command-line args: [u'-v', u'http://www.youtube.com/watch?v=BaW_jenozKcj']
[debug] Encodings: locale cp1251, fs mbcs, out cp866, pref cp1251
[debug] youtube-dl version 2018.02.11
[debug] Python version 2.7.11 - Windows-2003Server-5.2.3790-SP2
[debug] exe versions: ffmpeg N-75573-g1d0487f, ffprobe N-75573-g1d0487f, rtmpdump 2.4
[debug] Proxy map: {}
...
<end of log>

If the purpose of this issue is a site support request please provide all kinds of example URLs support for which should be included (replace following example URLs by yours):

Single video: https://www.youtube.com/watch?v=BaW_jenozKc
Single video: https://youtu.be/BaW_jenozKc
Playlist: https://www.youtube.com/playlist?list=PL4lCao7KL_QFVb7Iudeipvc2BCavECqzc

Note that youtube-dl does not support sites dedicated to copyright infringement. In order for site support request to be accepted all provided example URLs should not violate any copyrights.

Description of your issue, suggested solution and other information
Explanation of your issue in arbitrary form goes here. Please make sure the description is worded well enough to be understood. Provide as much context and examples as possible.
If work on your issue requires account credentials please provide them or explain how one can obtain them.

Your syntax is incorrect. With this syntax you download all videos from user followed by downloading all videos that match ytsearch query.

In that case, what's the right syntax? swapping the parameters youtube-dl ignore the YoutTube user URL, do a global search, and download just one video (about a hockey player, by the way)
youtube-dl "ytsearch:'David Booth'" https://www.youtube.com/user/lyndapodcast

Again: it's technically impossible to do non global search. You either use ytsearch or pass youtube's search URL.

Add the found videos, or just the videos you are interested in from your search on YT to a new playlist you just made, and then use youtube-dl with that playlist URL.


On-demand etc snapshots leave cluster in Provisioning state with a control-plane node Cordoned

Rancher Server Setup

Rancher version: 2.6.3
Installation option (Docker install/Helm Chart):

If Helm Chart, Kubernetes Cluster and version (RKE1, RKE2, k3s, EKS, etc):
Helm. Provider: RKE1 Kubernetes Version: v1.20.8

Proxy/Cert Details:

Information about the Cluster

Kubernetes version: Provider: RKE2 Kubernetes Version: v1.21.9
Cluster Type (Local/Downstream):

If downstream, what type of cluster? (Custom/Imported or specify provider for Hosted/Infrastructure Provider):
Downstream RKE2 on custom openstack nodes. Installed using 2.6.3 TechPreview RKE2
3 control plane nodes, 3 worker nodes
ubuntu 20.04 base image
Schedule backups every 5 hours to local

User Information

What is the role of the user logged in? (Admin/Cluster Owner/Cluster Member/Project Owner/Project Member/Custom)

If custom, define the set of permissions:
Admin

Describe the bug
When a manual snapshot is taken, the Cluster remains in a "Provisioning" state even after the backup is completed.
The backup files were successfully created on local node storage.
Scheduled backups run correctly without seeing this issue.
To Reproduce

Deploy a new cluster
At some time when cluster is fully provisioned / stable, select "Take Snapshot" command from the Cluster Management.
Backup files are created
One of the nodes remains Cordoned and the cluster is in a Provisioning state.

Result
Expected Result

I didn't expect the cluster nodes to be cordoned through the etc snapshot process
If that is necessary, the cordon taint needs to be reliable removed
Cluster should return to Active state

Screenshots

Additional context
RKEControlPlanesuser1.yaml.txt

This may be similar / related to: #36794


LICENSE in pypi tarball

Hello, could you please consider to add LICENSE file along the sources in pypi tarball? CHANGELOG.md and perhaps also README.md as well would be nice, too.

@pgajdos
What would you like them to look like?  If you could submit a PR for this, that would be great.

Aha, I had overlooked, that you have common *.md, not related to python module only. In that case, I guess it would suffice that LICENSE file is added to python/MANIFEST.in and therefore also copied into python sub-directory. Do you think it would suffice?

Sounds good to me.


Change terminal font color to differentiate terminal commands and python

Terminal font color should help us differentiate what is a terminal command, and what is a python app/script. I don't need it colorful 😁, but it could be grey font for terminal commands and white for python.

Unfortunately we don't set colours in the terminal. That would either be a setting in your theme or your shell. Otherwise it's a question for VS Code.


Is it possible to add nodeSelector to Karpenter deployment.yaml

It'll help to simplify and security the configuration if we could specify nodeSelector when install karpenter.

We will add this, thanks for suggestion.


Design a JuiceFS's storage API protocol (different from S3 API) for users to implement their own backend

The storage layer of this project is based on object storage, which is great (I'm a big fan of this kind of usage). But it shouldn't be limited to AWS S3 or any other cloud service providers' products. It should also support users to implement and use their own custom storage backends by following a simplified (compared to S3 API) API protocol that belongs to JuiceFS.

The API and implementations is current hold in juicesync, see https://github.com/juicedata/juicesync/blob/master/object/object_storage.go#L45
Currently, JuiceFS only use part of interface in  object.ObjectStorage, Get, Put and Delete should be enough for JuiceFS.

The API and implementations is current hold in juicesync, see https://github.com/juicedata/juicesync/blob/master/object/object_storage.go#L45
Currently, JuiceFS only use part of interface in  object.ObjectStorage, Get, Put and Delete should be enough for JuiceFS.

I think we can put the interface here.

I think we can put the interface here.


Synthesize + Evaluate blueprint

Template with LSTM and Evaluate with default configs

going to delete and copy this over to develop - this is supposed to merge into develop, not main


Azure container instances with managed identities is only suported by Linux container groups. Documentation should clarify this

Azure container instances with managed identities is only suported by Linux container groups. Documentation should clarify this
When trying to create an Azure Container Instance via yaml with osType: Windows the following error is returned:
(IdentityNotSupportedOnWindows) Managed service identity is not supported for Windows container groups.
Code: IdentityNotSupportedOnWindows
Message: Managed service identity is not supported for Windows container groups.

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

ID: f4bb823e-1c72-5777-bdd6-e89942c4f470
Version Independent ID: eb046e79-f39c-dcca-fbd4-519c0a320201
Content: Enable managed identity in container group - Azure Container Instances
Content Source: articles/container-instances/container-instances-managed-identity.md
Service: container-instances
GitHub Login: @tomvcassidy
Microsoft Alias: tomcassidy

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

@christianarg
Thanks for your feedback! I've assigned this issue to the author who will investigate and update as appropriate.

@AjayBathini-MSFT Any update on this front as it is not documented anywhere and one only finds out when trying to deploy ACI?

@tomvcassidy
Can you add your comments on above query.

@AjayBathini-MSFT I can also confirm I am seeing this and it is not documented anywhere.  Can we get an update on this issue?

Discussed and closed on #108679 without resolution.

One limitation is mentioned in https://learn.microsoft.com/en-us/azure/container-instances/using-azure-container-registry-mi. It reduces issue to from "Windows container groups does not support MSI at all" to "Windows containers don't support managed identity-authenticated image pulls with ACR."

Documentation is not clear at all about windows container support of managed identity .
In limitation we have that only user assigned identity is supported
https://learn.microsoft.com/en-us/azure/container-instances/using-azure-container-registry-mi#limitations
But when trying (in CLI and ARM) with user managed identity and windows container i have this error message :

Managed service identity is not supported for Windows container groups. (Code: IdentityNotSupportedOnWindows)

. Can we get an update on this issue?

I have the same problem...
(IdentityNotSupportedOnWindows) Managed service identity is not supported for Windows container groups.
Code: IdentityNotSupportedOnWindows
Message: Managed service identity is not supported for Windows container groups.
I use as apiVersion for my yaml file: '2023-05-01' . All fine for Linux ACI but not for Windows ACI,

Facing the same issue when i tried to deploy a Windows ACI. Any solution for this?

I have the same issue when using a user assigned identity
(IdentityNotSupportedOnWindows) Managed service identity is not supported for Windows container groups.
Code: IdentityNotSupportedOnWindows
Message: Managed service identity is not supported for Windows container groups.
The documentation claims that user assigned identities should work for windows containers

Hello all. Here is my recap for this issue.
The linked documentation  does not mention any limitations for Windows-based ACI MSI.
Other documentation mentions that only user-assigned managed identities works when context is pulling image from ACR: Windows containers don't support system-assigned managed identity-authenticated image pulls with ACR, only user-assigned.
The current state of ACI deployments:

At the moment creation Windows-based Microsoft.ContainerInstance/containerGroups resources fails if any managed identity is being enabled.
Portal UX does not expose Identity blade for Windows-based ACI

System-assigned managed identity
DEBUG: ============================ HTTP REQUEST ============================

HTTP Method:
PUT

Absolute Uri:
https://management.azure.com/subscriptions/<redacted>/resourceGroups/jkujanpaa-aci-testing-rg/providers/Microsoft.ContainerInstance/containerGroups/windows-public-system-msi-aci?api-version=2022-10-01-preview

Headers:
x-ms-unique-id                : 9,10
x-ms-client-request-id        : 0d1663d0-d26e-4b16-a3d7-e3089c560c4a
CommandName                   : Az.ContainerInstance.internal\New-AzContainerGroup
FullCommandName               : New-AzContainerGroup_CreateExpanded
ParameterSetName              : __AllParameterSets
User-Agent                    : AzurePowershell/v10.4.1,PSVersion/v7.4.0,Az.ContainerInstance/3.2.2

Body:
{
  "location": "West Europe",
  "identity": {
    "type": "SystemAssigned"
  },
  "properties": {
    "ipAddress": {
      "ports": [
        {
          "port": 80
        }
      ],
      "type": "Public",
      "dnsNameLabel": "qwerfghvb-aci-demo-win-system"
    },
    "containers": [
      {
        "properties": {
          "resources": {
            "requests": {
              "memoryInGB": 1.5,
              "cpu": 1
            }
          },
          "image": "mcr.microsoft.com/windows/servercore/iis:nanoserver",
          "ports": [
            {
              "port": 80
            }
          ]
        },
        "name": "xx"
      }
    ],
    "osType": "Windows"
  }
}

DEBUG: BeforeCall:
DEBUG: 8:14:16 PM - [ConfigManager] Got nothing from [EnableLoginByWam], Module = [], Cmdlet = []. Returning default value [False].
DEBUG: ============================ HTTP RESPONSE ============================

Status Code:
BadRequest

Headers:
Cache-Control                 : no-cache
Pragma                        : no-cache
x-ms-ratelimit-remaining-subscription-resource-requests-pt5m: 99
x-ms-ratelimit-remaining-subscription-resource-requests-pt1h: 299
x-ms-request-id               : westeurope:e89f7d32-cd09-444a-98d4-069cfe3ec3ff
x-ms-ratelimit-remaining-subscription-writes: 1198
x-ms-correlation-request-id   : 16f6e78e-c13e-4ff6-9d6c-4c4791537c8d
x-ms-routing-request-id       : SWEDENCENTRAL:20240108T181419Z:16f6e78e-c13e-4ff6-9d6c-4c4791537c8d
Strict-Transport-Security     : max-age=31536000; includeSubDomains
X-Content-Type-Options        : nosniff
Date                          : Mon, 08 Jan 2024 18:14:19 GMT

Body:
{
  "error": {
    "code": "IdentityNotSupportedOnWindows",
    "message": "Managed service identity is not supported for Windows container groups."
  }
}

User-assigned managed identity
DEBUG: ============================ HTTP REQUEST ============================

HTTP Method:
PUT

Absolute Uri:
https://management.azure.com/subscriptions/<redacted>/resourceGroups/jkujanpaa-aci-testing-rg/providers/Microsoft.ContainerInstance/containerGroups/windows-public-user-msi-aci?api-version=2022-10-01-preview

Headers:
x-ms-unique-id                : 13,14
x-ms-client-request-id        : 20b389ed-6879-411d-b44c-83cb06328489
CommandName                   : Az.ContainerInstance.internal\New-AzContainerGroup
FullCommandName               : New-AzContainerGroup_CreateExpanded
ParameterSetName              : __AllParameterSets
User-Agent                    : AzurePowershell/v10.4.1,PSVersion/v7.4.0,Az.ContainerInstance/3.2.2

Body:
{
  "location": "West Europe",
  "identity": {
    "type": "UserAssigned",
    "userAssignedIdentities": {
      "/subscriptions/<redacted>/resourceGroups/jkujanpaa-aci-testing-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/jkujanpaa-aci-ua": {}
    }
  },
  "properties": {
    "ipAddress": {
      "ports": [
        {
          "port": 80
        }
      ],
      "type": "Public",
      "dnsNameLabel": "qwerfghvb-aci-demo-win-user"
    },
    "containers": [
      {
        "properties": {
          "resources": {
            "requests": {
              "memoryInGB": 1.5,
              "cpu": 1
            }
          },
          "image": "mcr.microsoft.com/windows/servercore/iis:nanoserver",
          "ports": [
            {
              "port": 80
            }
          ]
        },
        "name": "xx"
      }
    ],
    "osType": "Windows"
  }
}

DEBUG: BeforeCall:
DEBUG: ============================ HTTP RESPONSE ============================

Status Code:
BadRequest

Headers:
Cache-Control                 : no-cache
Pragma                        : no-cache
x-ms-ratelimit-remaining-subscription-resource-requests-pt5m: 99
x-ms-ratelimit-remaining-subscription-resource-requests-pt1h: 299
x-ms-request-id               : westeurope:a3029bf1-61c7-42a3-ad24-acd99bc9028c
x-ms-ratelimit-remaining-subscription-writes: 1199
x-ms-correlation-request-id   : b1a737ac-739e-41f1-ba90-d68fbce13a09
x-ms-routing-request-id       : SWEDENCENTRAL:20240108T181802Z:b1a737ac-739e-41f1-ba90-d68fbce13a09
Strict-Transport-Security     : max-age=31536000; includeSubDomains
X-Content-Type-Options        : nosniff
Date                          : Mon, 08 Jan 2024 18:18:01 GMT

Body:
{
  "error": {
    "code": "IdentityNotSupportedOnWindows",
    "message": "Managed service identity is not supported for Windows container groups."
  }
}

Asnwering for: https://twitter.com/AzureSupport/status/1744416409302495243
Confirming my identy on twitter thread

Thanks for your contribution to our documentation
We sincerely apologize for the delayed response. Unfortunately, we have been unable to review this issue in a timely manner. However, we are making overall enhancements to our content. We are closing this issue for now as there has been no activity for a while. If you feel that the problem persists, please respond to this issue with additional information.
?
Please continue to provide feedback about the documentation. We appreciate your contributions to our community.
#please-close

This issue still exists. The lack of activity comes from MSFT/PG.
Please, reopen.

#please-open

Is this being worked with PG?
Clearly documentation and service features are out of sync.

As customer/developer I would like to trust documentation to provide correct information about the service but instead of setting up service properly I'm getting this
{
  "error": {
    "code": "IdentityNotSupportedOnWindows",
    "message": "Managed service identity is not supported for Windows container groups."
  }
}

even the documentation does not mention anything about MSI limitations with Windows container groups.

Minimal steps to reproduce the issue with Powershell:
$container = New-AzContainerInstanceObject -Name test-container -Image mcr.microsoft.com/windows/servercore/iis:nanoserver
New-AzContainerGroup -ResourceGroupName <resource group name> -Name <container name> -Location eastus -Container $container -OsType Windows -IdentityType SystemAssigned

Which location are you trying? Use "az container create". The OS type restriction has been removed.
Something like
az container create -g <resource group name> --name <container name> --image mcr.microsoft.com/windows/nanoserver:1809 --assign-identity [system] --os-type windows
Then you can exec into the container and try something like
curl -G -v %IDENTITY_ENDPOINT% --data-urlencode resource=https://vault.azure.net --data-urlencode principalId= -H secret:%IDENTITY_HEADER%
You cannot call the IMDS endpoint directly from windows container

Which location are you trying?

westeurope, northeurope, eastus

The OS type restriction has been removed.

When?

Try something like az container create -g  --name  --image mcr.microsoft.com/windows/nanoserver:1809 --assign-identity [system] --os-type windows

Do you have (debug) logs from the succesfull invocation of that command or payload of the request and the response?
Do you happen to know if your command is missing something(Try something like part) or did it work for you after changing inputs for -g and --name?

Then you can exec into the container and run

Not sure what is the point of this because PUT endpoint of Microsoft.ContainerInstance/containerGroups does not create resource at all. if MSI is turned on.
To add more information here is the response:
cli.azure.cli.core.sdk.policies: Response status: 400
cli.azure.cli.core.sdk.policies: Response headers:
cli.azure.cli.core.sdk.policies:     'Cache-Control': 'no-cache'
cli.azure.cli.core.sdk.policies:     'Pragma': 'no-cache'
cli.azure.cli.core.sdk.policies:     'Content-Length': '134'
cli.azure.cli.core.sdk.policies:     'Content-Type': 'application/json; charset=utf-8'
cli.azure.cli.core.sdk.policies:     'Expires': '-1'
cli.azure.cli.core.sdk.policies:     'x-ms-ratelimit-remaining-subscription-resource-requests-pt5m': '99'
cli.azure.cli.core.sdk.policies:     'x-ms-ratelimit-remaining-subscription-resource-requests-pt1h': '299'
cli.azure.cli.core.sdk.policies:     'x-ms-request-id': 'westeurope:905956ef-36e6-46bb-8cbe-ca59143d5cfc'
cli.azure.cli.core.sdk.policies:     'x-ms-ratelimit-remaining-subscription-writes': '1199'
cli.azure.cli.core.sdk.policies:     'x-ms-correlation-request-id': '58899d73-4784-40ea-98b6-c9e7f6ffa122'
cli.azure.cli.core.sdk.policies:     'x-ms-routing-request-id': 'SWEDENCENTRAL:20240222T204525Z:58899d73-4784-40ea-98b6-c9e7f6ffa122'
cli.azure.cli.core.sdk.policies:     'Strict-Transport-Security': 'max-age=31536000; includeSubDomains'
cli.azure.cli.core.sdk.policies:     'X-Content-Type-Options': 'nosniff'
cli.azure.cli.core.sdk.policies:     'Date': 'Thu, 22 Feb 2024 20:45:24 GMT'
cli.azure.cli.core.sdk.policies: Response content:
cli.azure.cli.core.sdk.policies: {"error":{"code":"IdentityNotSupportedOnWindows","message":"Managed service identity is not supported for Windows container groups."}}

Correlation/operation id: df360089-bd26-47c2-9a84-4558d3ae41b1 if anyone from MSFT is reading.

Sorry, I see the issue. The release is not rolled out to all Azure regions yet. Try WestCentralUS, KoreaSouth etc. It will be fully rolled out by this month end. By 'exec' I mean, you can connect to the container from the Azure portal and run the curl command. It is tested.

The release is not rolled out to all Azure regions yet. Try WestCentralUS, KoreaSouth etc. It will be fully rolled out by this month end.
Cool. Finally answers. Tested on west centralus, seems to be working fine.

11 months

@sanmoy
West Europe  still not supported.?
We are in in mid March/2024 already and still not rolled out?

Regions working for MSI + Windows
19-March-2024

Region
MSI on Windows?

australiacentral
YES

australiaeast
YES

australiasoutheast
YES

brazilsouth
YES

canadacentral
YES

canadaeast
YES

centralindia
YES

centralus
YES

eastasia
YES

eastus
YES

eastus2
YES

francecentral
YES

germanywestcentral
YES

israelcentral
YES

italynorth
YES

japaneast
YES

japanwest
YES

koreacentral
YES

koreasouth
YES

northcentralus
YES

northeurope
YES

norwayeast
YES

polandcentral
YES

qatarcentral
YES

southafricanorth
YES

southafricawest
YES

southcentralus
YES

southeastasia
YES

southindia
YES

swedencentral
YES

switzerlandnorth
YES

switzerlandwest
YES

uaenorth
YES

uksouth
YES

ukwest
YES

westcentralus
YES

westindia
YES

westus
YES

westus2
YES

westus3
YES

Which location are you trying? Use "az container create". The OS type restriction has been removed. Try something like az container create -g <resource group name> --name <container name> --image mcr.microsoft.com/windows/nanoserver:1809 --assign-identity [system] --os-type windows
Then you can exec into the container and run
curl -G -v %IDENTITY_ENDPOINT% --data-urlencode resource=https://vault.azure.net --data-urlencode principalId=<principal id> -H secret:%IDENTITY_HEADER%
You cannot call the IMDS endpoint directly from windows container

Which value should I use as IDENTITY_ENDPOINT and IDENTITY_HEADER? we also try to use system/user managed identity with windows OS and default neither az login --identity nor az login --identity --username <SP_ID> work.

@sakitA
The values for IDENTITY_ENDPOINT and IDENTITY_HEADER are automatically created, so if you can't log in, it sounds almost like the identity isn't active. If you go to your container group in the Azure portal and go to the identity tab, check to see if Status is toggled On or Off. It should be On.
If you're still having an issue, could you create a separate issue? I'd like to close this one for tracking purposes now that it seems the original issue is resolved.
Thanks. #please-close

Thanks, @tomvcassidy.

I don't believe this issue is resolved. This is the error I see when attempting to use a ManagedIdentityCredential(clientId) with a windows container instance / group created from ACR in a new WestUS2 resource group:
ManagedIdentityCredential authentication failed: DefaultIdentityNotDefined
The portal does not contain an Identity tab for our windows container. It does for linux containers created in the same RG from the same ACR.
I can confirm that that the UserAssignedIdentity is, indeed, assigned to the container via az container show.
"identity": {
    "principalId": null,
    "tenantId": "OMITTED",
    "type": "UserAssigned",
    "userAssignedIdentities": {
    "/subscriptions/OMITTED/resourcegroups/OMITTED/providers/Microsoft.ManagedIdentity/userAssignedIdentities/OMITTED": {
        "clientId": OMITTED,
        "principalId": OMITTED
      }
    }


feat: harmonize colors on dashboard

hello @djeck1432 please kindly review :)

hello @djeck1432 i have implemented requested changes
Kindly review :)

Hi, while running your code, I got this error, please fix that


Sluggish performance for large schemas

Describe the bug
When working with large schemas (3 MB SDL in our case), typing or performing any action in general becomse sluggish. This is because every time the state changes, it's serialized in the browser thread with JSON.stringify, which takes a few hundred milliseconds.
To Reproduce
Steps to reproduce the behavior:

Set the schema URL to a schema that's in the megabytes
Start typing

Expected behavior
The app should continue to run smoothly
I'm already preparing PR to fix this...

If the schema isn't something private, you could share it and I would import it into Altair and take a closer look.


Determine 'official' namespace where catalog will run

We are currently suggesting 'catalog' as the namespace where catalog components run.  I think we should lock down an 'official' namespace' which is less ambiguous.  I would suggest something like kube-service-catalog.

Any reason not to run it in kube-system?  Similar to kube-dns

With aggregated api, why does this matter? Does svc cat need it's completely own namespace to own and run in?

FWIW, I always run service catalog in kube-system since I consider it part of the cluster plumbing.

as it should be  ;-)

I don't think mandating an official namespace should be a goal. We lose a
lot of time in this group when trying to force everyone to accept the same
solution.
On Tue, Apr 3, 2018 at 10:29 AM, Carolyn Van Slyck<EMAIL_ADDRESS>
wrote:

FWIW, I always run service catalog in kube-system since I consider it part
of the cluster plumbing.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/kubernetes-incubator/service-catalog/issues/926#issuecomment-378270303,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAWXmI1Kfwr2B8XwcVQtsfy8twJkE64kks5tk4dngaJpZM4N1oyp
.

SGTM


NuGet.Server should come along with symbol serving support

Situation

Since NuGet.Server does not come with a symbol server, makes sense to …

NuGet.Server lightweight NuGet server cannot serve as a symbol server. 👎🏻
Request
Include a symbol server in the NuGet.Server. 👍🏻

Hello @Uzivatel919, thanks for taking time to open this feature request. Currently, NuGet.Server only supports NuGet packages and not symbol packages or serving symbol (.pdb) files, as you have stated.
Currently NuGet.Server is a lower priority for our team. NuGet.Server only supports the V2 protocol which is in maintenance mode and not getting new features. Most of our team's energies are focusing on NuGet.org itself.
It is technically possible to support serving symbols in NuGet.Server but it would likely require help from the community to make this feature request happen, in the form of writing a small design and opening one or a few pull requests. For reference, in the past a community member made a huge contribution and helped us move NuGet.Server to ASP.NET to support multiple feeds in a single process.
In the meantime I'd recommend using one of the 3rd party package sources mentioned in our docs that also support symbols. You may need to check docs to confirm which servers supports symbols.
Off the top of my head, perhaps you can look into:

BaGet - similar to NuGet.Server in that it can run in a local server
Sleet - serverless, if you want to avoid managing the web server yourself

Another option that some folks leverage is to bundle the PDB files into the main NuGet package. See Alternative PDB distribution on the SourceLink for more information about some pros and cons on using .snupkg. There's also some interesting information on this Azure Artifacts feature request page for supporting .snupkg on Azure Artifacts.

Hello @joelverhagen, thanks for apposite answer. I will stuck with <AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder> for this time.
Are there any starting points if I would be for starting one or few PRs?

If you wanted to contribute this feature to NuGet.Server, I would follow the following steps:

Draft a short design document to describe your changes and how they would work.

Instructions for a proposal: https://github.com/NuGet/Home/blob/dev/meta/README.md
This step should be done before you open the PRs for review but you can prototype if you want to help write the design.
Some questions in my mind:

How does the client discover the symbol push endpoint? In V3, there is a resource for service discovery. There is no similar flow in V2 and I'm not even sure how NuGet push behaves with pushing .snupkg packages to a V2 feed.
What URL pattern would the symbols be served from? The base URL of this pattern would be what you configure into the VS debugger symbol server URLs.

Break the work up into phases so that the PRs are not too big (this helps us to review in a timely manner).

For example, PRs could be:

Add C# classes that accept a .snupkg, pull out PDBs, and save them to disk in a structured format for serving future requests. Something like IServerPackageRepository but for .snupkg files. You'll need to validate that the PDB matches the DLL with code like what NuGet.org uses in our backend: SymbolValidatorService.
Add the REST API for reading symbols. This is not a NuGet protocol but a PDB/debugger related protocol. I don't know the details of it but both BaGet and Sleet are open source so you can probably learn what you need there. Maybe @loic-sharma or @emgarten have references on the symbol server protocol so you can learn what the REST API should look like.
Add the REST API for pushing symbols. The protocol to follow is here: https://docs.microsoft.com/en-us/nuget/api/symbol-package-publish-resource. The .snupkg push endpoint is a lot like the existing .nupkg endpoint but it's a different URL (NuGet.org has /api/v2/symbolpackage instead of /api/v2/package) and requires a package with SymbolsPackage package type (more details on .snupkg). In the NuGet.org case we validate the .snupkg matches the .nupkg asynchronously (in the background, after push) but in NuGet.Server you could validate it before the push completes and return an HTTP 400 if a problem is found.

Open the PRs in sequence and get reviews 😄.

This is not a NuGet protocol but a PDB/debugger related protocol. I don't know the details of it but both BaGet and Sleet are open source so you can probably learn what you need there. Maybe @loic-sharma or @emgarten have references on the symbol server protocol so you can learn what the REST API should look like.

Here are some helpful resources:

Symbol server and PDB docs

https://github.com/dotnet/symstore/blob/main/docs/specs/Simple_Symbol_Query_Protocol.md
https://github.com/dotnet/symstore/blob/main/docs/specs/SSQP_Key_Conventions.md
https://github.com/dotnet/core/blob/main/Documentation/diagnostics/portable_pdb.md
https://github.com/dotnet/runtime/blob/main/docs/design/specs/PortablePdb-Metadata.md

Interesting code

BaGet

SymbolController.Upload
`SymbolController.Get
SymbolIndexingService.IndexAsync

Sleet

Symbols.GetAssembliesAsync
SymbolsUtility


Feature Request: Make MC_ node resource group name changeable

When deploying an Azure container app environment with vnet connection an extra resource group is created with the name MC_######. In a lot of enterprises there are naming policies on resource groups so it would be nice to be able to change this name in the same way that this is possible in AKS.
I would like to be able to give a custom name to this resource group like we can do with AKS
AKS example:
az aks create --name myAKSCluster --resource-group myResourceGroup --node-resource-group myNodeResourceGroup
Since Container Apps is using AKS in the background maybe you could make use of this AKS feature in container apps as well?

Why the resources that are inside the MC_ resource group cannot be created inside the resource group where everything else is?? What happens if I need to move the container app from one subscription to another one?

We currently don't support the changing of the RGs unfortunately. There are no immediate plans to support this.


What is the future plan of this torchchat project?

🐛 Describe the bug
Torchchat provides a solution of running LLM with PyTorch optimization on servers, desktop and mobile.
May I know what is the future plan of this project? Is there any new features to finish to encourage users to use Torchchat as a solution?

cc @Guobing-Chen @jgong5 @mingfeima

The Purpose of this Project
Fill the LLM inference gap in PyTorch's E2E ecosystem and provide seamless integration with other projects like torchtune, AO and core
Showcase the best way to run local LLMs using the latest PyTorch features for your model and target device
Reduce the effort required to run LLMs using PyTorch
The Direction of this Project
Strengthening Integration with other PyTorch projects like AO, and Tune
Cranking on Performance including GPU, CPU, and Edge
Expanding Model Support including upcoming Llama and diffusion models
Enabling Distributed Compute (Multi-GPU and Multi-Node)
To Contribute
Scan through the open issues and take an unclaimed item
We try to provide enough clarity in these issues for anyone to contribute
If you want to add something new, please file an issue first so that we can discuss the details. This will save time ensure your PR gets accepted.
Please Review the Contributing Guidelines for more details


Add "profile card" to navbar

Add a dropdown to the profile name that's displayed on the navbar.
Upon clicking the profile name, a "card" or dropdown appears with all the other information found in webauthn's client object.
Also change the profile name to only show whatever's in the display_name field.

The idea is to implement:

When the user is not logged in, only Login link is shown at the rightmost of the navbar.
Once the user is logged in, the display_name is shown along with a caret sign just beside it, clicking on the caret sign would open a submenu, with a log out link and all the group names like (isrd_testers, gpcr_academia_readers) the user is part of.

The changes have been merged to master, assigning this to @hongsudt to verify and close.


:pencil: Update Readme

Try to modify Readme format.

by the way change .net4.6.1 to .net4.6.2 please

sure.


Clean up managed v-tables in the C# front end upon exit

Since the managed (patched) v-tables are created using Marshal.AllocHGlobal, we must destroy them using Marhsal.FreeHGlobal when they are not needed. Because they are static, we need to destroy them when the process is terminated. It can be done either using a static field with a destructor - https://stackoverflow.com/questions/4364665/static-destructor/18709110#18709110 - or with the help of AppDomain.CurrentDomain.ProcessExit/DomainUnload.

@genuinelucifer would you like to try this one?

@ddobrev I tried 2-3 methods for destruction. One of them involved wrapping all the VTable values into some other wrapper class ad use it's destructor instead. But, that was turning into problems.
.
I finally decided that using a static variable and using it's destructor (as in the thread you provided link to) is the best option here. Should I go with this approach?

@genuinelucifer I am really sorry about this delay, I changed my e-mail recently and I have not got used it checking it too.
Yes, I favour this approach myself and I am glad you've reached the same conclusion. Please go ahead.


GoSnappi: SetStatusCode200 on GetMetricsResponse is not working as expected

Snappi version: This issue is observed with dev version of snappi [https://github.com/open-traffic-generator/snappi/tree/gosnappi_server_tmp/gosnappi].
But could be a pre-existing issue.
In ixia-c controller GetMetrics implementation on top of Gosnappi http server, (http://gitlab.it.keysight.com/athena/controller/blob/dev-gosnappi-http/internal/service/results.go), we tried to do following,
result.SetStatusCode200(response) \\ where response= MetricsResponse; result = GetMetricsResponse

And the expectation is the get_metrics call (as mentioned below) would succeed for all choices (port/flow/...)
POST https://localhost/results/metrics HTTP/1.1
Content-Type: application/json

{
    "choice": "port"
}

For choice = "port" it does, but for choice="flow" it shows following weird response,
HTTP/1.1 200 OK
Date: Wed, 01 Dec 2021 14:54:22 GMT
Content-Length: 31
Content-Type: text/plain; charset=utf-8
Connection: close

{
  "choice": "port_metrics"
}

When the scenario is checked with debug-prints in GetMetrics hook of metrics_controller.go (of gosnappi server),
       if result.HasStatusCode200() {
		fmt.Println("MC 200 MSG: ", result.StatusCode200().Msg())
		fmt.Println("MC 200 JSON: ", result.StatusCode200().ToJson())
		httpapi.WriteJSONResponse(w, 200, result.StatusCode200())
		return
	}

it reflected the following output,
MC 200 MSG:  choice:flow_metrics  flow_metrics:{name:"flw"  transmit:started  frames_tx:0  frames_rx:430  bytes_tx:0  bytes_rx:55040  frames_tx_rate:0  frames_rx_rate:0}
MC 200 JSON:  {
  "choice":  "port_metrics"
}

i.e. the Msg() reflects the correct parameters, but ToJson() does not.
I think this reflects the SetStatusCode200 did not work on GetMetricsResponse where MetricsResponse is not of default choice-type (i.e. "port")

Workaround used in ixia-c controller for time-being is,
Instead of
result.SetStatusCode200(response)

used the following,
result.StatusCode200().FromJson(response.ToJson())

FYI, Same observation is seen with GetStatesResponse as well.

This should address in https://github.com/open-traffic-generator/snappi/releases/tag/v0.7.1


[5.1] Can't use .php extension in POST route

It doesn't seem possible to use a .php extension (or possible other extensions) with POST. This always throws a 405 error:
# cURL request
curl -X POST -d 'id=5' http://foo.local:8000/some_file.php

Route::post('some_file.php', 'SomeController@someMethod');

However, GET does work, but I can't access any data within the controller method.
Route::get('some_file.php', 'SomeController@someMethod');

# Within SomeController@someMethod
$request->all() // Always empty...

This is to do with your routing before you even reach laravel.


error page when image is not found

We display a crude error message when image is not shown for 60s.


Build on android doesn't work (* What went wrong: Execution failed for task ':customerio-reactnative:compileDebugJavaWithJavac'. > error: invalid source release: 17)

SDK version: 3.6.0
Are logs available? No, doesn't work
Describe the issue
Trying to build on android:
1: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':customerio-reactnative:compileDebugJavaWithJavac'.
> error: invalid source release: 17

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
==============================================================================

2: Task failed with an exception.
-----------
* What went wrong:
java.lang.StackOverflowError (no error message)

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
==============================================================================

* Get more help at https://help.gradle.org

BUILD FAILED in 1m 6s

error Failed to install the app. Make sure you have the Android development environment set up: https://reactnative.dev/docs/environment-setup.
Error: Command failed: ./gradlew app:installDebug -PreactNativeDevServerPort=8081
Warning: SDK processing. This version only understands SDK XML versions up to 3 but an SDK XML file of version 4 was encountered. This can happen if you use versions of Android Studio and the command-line tools that were released at different times.

FAILURE: Build completed with 2 failures.

1: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':customerio-reactnative:compileDebugJavaWithJavac'.
> error: invalid source release: 17

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
==============================================================================

2: Task failed with an exception.
-----------
* What went wrong:
java.lang.StackOverflowError (no error message)

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
==============================================================================

* Get more help at https://help.gradle.org

BUILD FAILED in 1m 6s

    at makeError (/home/hrq/Code/Work/copper/packages/app/node_modules/execa/index.js:174:9)
    at /home/hrq/Code/Work/copper/packages/app/node_modules/execa/index.js:278:16
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async runOnAllDevices (/home/hrq/Code/Work/copper/packages/app/node_modules/react-native/node_modules/@react-native-community/cli-platform-android/build/commands/runAndroid/runOnAllDevices.js:82:7)
    at async Command.handleAction (/home/hrq/Code/Work/copper/packages/app/node_modules/@react-native-community/cli/build/index.js:108:9)
info Run CLI with --verbose flag for more details.

Screenshots
Doesn't build
Additional context
N/A

Sorry to hear you are have some trouble with CIO SDK!
Let's break down the issue so we are in a better position to help you:

Is this the first time setting up the CIO RN SDK? or did you have a previous working setup that is now broken? If you had a previously working setup, what's the change you introduced to get the error?
Can you please give us more information about your environment?

What React Native version are you using?
What Gradle version is used for your Android project?
What Java version is installed on your machine? The error seems to indicate that you might not have Java 17 installed

Are you able to give us an example project to reproduce the issue?

With some more info about the environment of the app or a reproducer project, we would be happy to further assist with the issue.
Have a great day!

Closed because of inactivity. Feel free to respond and we can reopen the issue.


Enforce pydocstyle in pre-commit hooks

Is your feature request related to a problem? Please describe.
Some of the function docstrings in gdsfactory have inconsistent formatting. Additionally, in gplugins some functions seem to have old arguments in the docstrings and new ones haven't been added: https://github.com/gdsfactory/gplugins/blob/77e46b248c4ec2650a61fd119084bac848c002db/gplugins/gmsh/uz_xsection_mesh.py#L193-L237.
D417 would catch this problem.
Describe the solution you'd like

Enforce pydocstyle in pre-commit hooks and check if some rules could be relaxed to make this more pleasant for contributors.
Same for gplugins.
At some point, lint all the current docstrings

we can use ruff for this, which implements the pydocstyle rules


Broken on windows?

Hi,
first of all; great work!
I am trying out your application on two different systems, macOS and Windows 10. From my mac I am able to stream the image from my display to both the Windows and mac client, but from the Windows machine I have had less luck. I have tried the ffmepg command used on its own and it spits out data just fine. My theory is that something in the forking of a new process is broken in windows maybe? I am running it in cmd, which should be no problem as both node and ffmpeg runs on their own.
My ffmpeg command (mac):
ffmpeg -f avfoundation -probesize 32 -analyzeduration 10000 -i 1 -an -r 30 -c:v libx264 -f mp4 -g 5 -keyint_min 1 -pix_fmt yuv420p -profile:v baseline -level 3 -movflags +frag_keyframe+empty_moov+default_base_moof+omit_tfhd_offset -metadata title="ip <IP_ADDRESS>" -reset_timestamps 1 pipe:1
Windows runs the same command, but the dshow filter is used instead and with my input set to my capture card (worked with ffmepg before).
Besides the different ffmepg commands I can't figure out that anything else is different, even tried turning off the Windows firewall..

Can you try to create a playable mp4 file by changing the output from pipe:1 to test.mp4 and see if that plays in VLC? We must first make sure that can happen before attempting to stream it.

On my Windows machine I am able to create a playable mp4 file with the command
ffmpeg -f dshow -probesize 32 -analyzeduration 1000 -i video="Game Capture 4K60 Pro Video 01" -an -r 30 -c:v libx264 -f mp4 -g 10 -keyint_min 10 -pix_fmt yuv420p -profile:v baseline -level 3 -movflags +frag_keyframe+empty_moov+default_base_moof+omit_tfhd_offset -metadata title="ip <IP_ADDRESS>" -reset_timestamps 1 test.mp4
in cmd. Using that same command in the server.js file results in no file being created.

One thing that could be a problem is that this project is not using the latest versions of the module dependencies. All of my latest work was in my other project ffmpeg-streamer. The issue that you posted here has given me the idea to include avfoundation and dshow as input sources when I get a chance, which may be this weekend.
It would be cool if you could post a sample mp4 video online somewhere that I can download and analyze to verify that it was formatted correctly. Thanks.

Okay, I also did some digging into the spawn() function and the child_process api in node, there seems to be some problems or requirements with it according to:
https://github.com/nodejs/node/issues/19947
but I am not convinced that this is related.
Attached is the video sample you requested. Thank you! :)
test.mp4.zip

I made a quick test for mp4frag to verify that your mp4 was formatted correctly, and it was good. The trouble might be from -i video="Game Capture 4K60 Pro Video 01" with the quotes and/or spaces. I have heard from some people that sometimes nodejs chokes when spawning if the spaces in the parameters are not properly handled. Can you post a gist of the file that contains the code?
I have a question about your input device. I did a quick search and it seems that it is a gaming video capture card? Does it record your gameplay?
Also, I forgot to mention that the server.js code that streams my 14 cams was tested and works good on mac, linux, windows 7 and 10.  The goal was to be cross platform.

I have discovered that the issue was, like you said, using spaces and quotes when defining my input source. Using the syntax video="screen-capture-recorder" I got no video but using video=screen-capture-recorder it worked. Now I just need to figure out how to solve this with my spaced string...
Anyhow, the banned character error seems to be a bug with the node api and not your repo. Sorry for the inconvenience!
And once again, really nice work!


Changing site settings via Netlify CMS breaks config.yml

If you change the site settings via the Netlify CMS the virtual page config is removed. This makes the pages no longer accessible
virtualpages:
  admin:
    layout: admin/index
    output: html
    title: "Content Manager (Netlify CMS)"
  home:
      redirect: /
    _redirects:
    output: netlify_redirects

I'm trying to fix the Netlify CMS config file: https://github.com/Cecilapp/starter-blog/blob/master/static/admin/config.yml

Hello @nicholashu , I believe that the problem now is solved.
I'm pretty sure in a previous version of Netlify CMS, only modified values was altered in the config file. Now all data of the file are rewritten.
So I modified config.yml to suport virtyualpages (amon others): you must replace your file by this one in the previous comment to fix problems.


eslint-plugin-import doesn't honor tsconfig paths

Cloning #248 to a new issue because #248 got repurposed. :P
Note these paths from tsconfig.json:
    "baseUrl": ".",
    "paths": {
      "typed-redux-saga": ["."],
      "typed-redux-saga/macro": ["./macro"]
    }

It seems like eslint-plugin-import doesn't understand these, so for example tsc is happy with this import, but eslint-plugin-import believes that it is unresolved:
// eslint-disable-next-line import/no-unresolved
import * as Effects from "typed-redux-saga/macro";

We should confirm we're not doing anything wrong and--assuming we aren't--create an issue upstream.
We might need this: https://github.com/benmosher/eslint-plugin-import#typescript

This looks related https://github.com/benmosher/eslint-plugin-import/issues/1485


vulkan-sdk: <IP_ADDRESS> -> <IP_ADDRESS>

NOTE: I've cherry-picked the commit from https://github.com/NixOS/nixpkgs/pull/206364, so it would be cool to review+merge it first, and then I drop the commit here.
Description of changes

Bumps to latest tags, check changelog: https://vulkan.lunarg.com/doc/sdk/<IP_ADDRESS>/linux/release_notes.html

One of the patches of https://github.com/NixOS/nixpkgs/pull/201747 were upstreamed and now removed.

Things done
Tested building vulkan-tools, which built vulkan-headers, vulkan-loader, and glslang. Building vulkan-tools-lunarg builds vulkan-validation-layers, that builds the spirv stack. I've built vulkan-extension-layer and that closed the testing. All of this in x86-64-linux.

Thanks for bumping this. I was holding off bumping MoltenVK, so I could move it over to the SDK in nixpkgs instead of continuing to vendor it.

Nit: perhaps merge the two lunarg commits.

Nit: perhaps merge the two lunarg commits.

I already have it rebased with the cmake-fix and these last two squashed, but we'll have to wait for the next Merge master into staging-next >> Merge staging-next into staging cycle to avoid pinging unrelated parties.


Add proto alias for protobuf

proto is the extension for protobuf files, and is used in other syntax highlighters as the language id.
Description

Just adding the alias so that the proto language id can be used for code fences.
Checklist:
None of the below checklist items seem to apply

@Alhadis I don't think so, but I'm glad you mention it.
For one thing, many other highlighters already have the proto alias (including rouge, pigments, chroma, lowlight, refractor, prism, highlight.js).  For another, the extension for Cap'n Proto is capnp anyway.  Of those that also have Cap'n Proto highlighting, they seem to use capnp.

@dimitropoulos Fair enough. Well, that answers my question nicely, then. 👍


Feature: create new connection

When a "New Connection" button is clicked show new dialog to add new project to project list built in #88
Dialog needs to show list of projects.

Feature Added


Fix a serious termination check bug

Aya rejects
def just-pred (n : Nat) : Nat => pred n

def pred Nat : Nat
  | zero => zero
  | suc n => just-pred n

But this code is still rejected after the fix commit
def just-pred => pred

def pred Nat : Nat
  | zero => zero
  | suc n => just-pred n

bors merge


Progress calculation

How do we do it? What is it called?
In user testing, this random percentage didn't mean much :stuck_out_tongue_closed_eyes:

I've added "completion" to the percentage for testing but would still like to discuss how we calculate percentage. Some questions to ask during user testing

"is showing that percentage useful?"
"how would you want to summarize completion?" - warrants a version without the percentage as to not force the idea on them
"what would your reaction be to a patient with low completion percentage? Would you help them fill out their profile more thoroughly?"

Another way to phrase the question:
"What would you want to know about a patient's progress through different applications, and what would you do with it?"

yes! Nice!

recorded in future development docs


[Feature]: Add a github stats on the header.

🔖 Feature description
It would be a great addition to the website to display GitHub stats, such as stars ⭐ and forks 🍴, which will help strengthen the integrity of the project and attract more contributors. Showcasing these stats can highlight the project's popularity and engagement, encouraging more users to get involved.
🎤 Why is this feature needed ?
No response
✌ How do you aim to achieve this?
Pull Request Proposal:
I propose adding GitHub statistics (stars and forks) to the website's header or footer, whichever is preferred. This feature will use dynamic badges to display real-time stats, enhancing user engagement by showcasing the project's popularity and contributions.
By adding these stats to the header or footer, users can easily track the number of stars ⭐ and forks 🍴 the project has received, making the website more informative and visually engaging.
If this proposal is accepted, I am happy to open a pull request to implement this feature.
🔄 Additional Information
No response
👀 Have you spent some time to check if this feature request has been raised before?

[X] I checked and didn't find similar issue

Are you willing to submit PR?
Yes I am willing to submit a PR!

Thanks for suggesting this! We've already added that to the website, it's just hasn't been deployed yet.


Benchmark comparison

Heya! Could you add the faster #2 wait free 1p1c atomic elembuf to the benchmark comparison readme (comparison/README.md) instead of the synchronized mutex one?

Actually I just about to ask: how is the thread created in either elembuf library, or in the PR?
I grep-ed a bit:
$ grep -rwI Thread ~/.dub/packages/elembuf-1.1.5/
/.dub/packages/elembuf-1.1.5/elembuf/source/buffer.d:         __gshared ptrdiff_t mail = 0; // Thread sync variable, must fit a pointer.

$ grep -rwI spawn ~/.dub/packages/elembuf-1.1.5/
# nothing shows

$ grep -rI 'run('  ~/.dub/packages/elembuf-1.1.5/
# nothing shows

I cannot find how the thread is created & luanched.
And in your PR, I didn't find how the thread is launched either; also you are batch filling here in the loop:
https://github.com/mingwugmail/liblfdsd/blob/master/comparison/elembuf.d#L46
while it shows the feature of your library, but it's not the typical usage pattern of a queue, as other implementation in the comparison does: i.e. two threads: one produces, and another one consumes the element one-by-one.
This is the more common usage pattern to compare thread-safe queue libraries, i.e. test it works correctly under multi-threaded env.
I have to compare apple-to-apples.

I cannot find how the thread is created & luanched.

A thread is created here. It is given a dummy order of "do nothing" until the consumer creates a function or a delegate as work instructions to send to its mailbox.

while it shows the feature of your library, but it's not the typical usage pattern of a queue, as other implementation in the comparison does: i.e. two threads: one produces, and another one consumes the element one-by-one.

Yes this is what it is doing. The only difference is that the main thread is used as the consumer and the library provides the producer. The consumer gives delegates to as instruction on what work to do and how. This should not show in the benchmark though as construction time is not taken into account in it and I think delegates are just a pointer to the executable's lines so there is actually no construction aside from the pointer.

also you are batch filling here in the loop: ...

I can change that loop to what is above it

This is the more common usage pattern to compare thread-safe queue libraries, i.e. test it works correctly under multi-threaded env.

It works correctly as seen from sum in the benchmark, you may also re-check it manually if need be.

OK,  added.
https://github.com/mingwugmail/liblfdsd/commit/2519cb1fa1f364d486aef412d1f4bf3771014777
But that interface is a bit un-common; if you add new more conventional push/pop interface, it will be more easier for user to adopt the queue.

I gave you an example: there are multiple subscribers to a sourcer: with other queue implementation, each subscriber can hold its own msg queue, and the let the sourcer pump into it:
class Sourcer {
  void mainLoop() {
    msg = long_computation();
    for (sub; subscribers) {
      sub.messageQueue.push(msg);  //
    }
  }
}

i.e. that same event is pumped into multiple one-producer-one-consumer queues, in your current interface, how to code this?
i.e. the current elembuf src feed interface is selfish, it grab the sourcer to be its own feeder.
while the msg take long_computation() to generate, and may need to feed into other subscribers.

@mingwugmail
Heya!
I'm sorry, I'm having a bit of an issue understanding. So your question is does the buffer try to own the source and block others from using it? If this is your question, here is the answer:
No, the same source can be set to many buffers. There is a catch though. Source "interface" can be a delegate or a function. A delegate uses external variables while a function only uses its internal function variables. You can think of it like pure and unpure functions, just for simplification.
As you know, pure functions always return the same if the parameters are the same. So you can give the same function to as many buffers as you wish and it'll be the same result.
But with delegates this is not the case. Delegates can access the consumer's variables and if the first buffer changes these variables, then the next buffer that uses the same delegate can look very different to the first buffer.
While I am speaking of many buffers, I need to remind you that it may not actually be possible to do more than one buffer. As you probably will find out in the docs, on Linux & Posix -systems you can create as many buffers as you wish, as long as you have sufficient memory and the OS maximum limits allow for it. However, on Windows systems, you can only have one Elembuf. If you try to create more, the new buffer will actually have the same underlying data as the first original buffer. So modifying the second buffer will show in the first buffer and vice versa. The interesting thing is that it is a slice, but if you deallocate it, it wont deallocate the first original buffer. This is a very sad OS limitation which you cannot get around, in the future I will try to look for solutions by dropping win7 compatibility and just supporting win10.

I'm saying the src feed interface is selfish, (I know with delegate you can access external vars), it warped the src producer in its own feeding thread. While in my subscribers example, the producer may need pump into multiple subscribers' (each one of them has a one-producer-one-consumer) queues. So can we have the interface to do this on Linux & Posix -systems?
Also I think you need to put this warning on top of the user doc:

on Windows systems, you can only have one Elembuf.

Heya!

Also I think you need to put this warning on top of the user doc:

on Windows systems, you can only have one Elembuf.

😄  It already is there!
[WINDOWS] Additional instances will become slices of the original buffer.

Actually one is in the buffer declaration below bugs and the second one is an indepth explanation in the expert unittest documentation.

I'm saying the src feed interface is selfish, (I know with delegate you can access external vars), it warped the src producer in its own feeding thread. While in my subscribers example, the producer may need pump into multiple subscribers' (each one of them has a one-producer-one-consumer) queues. So can we have the interface to do this on Linux & Posix -systems?

Oh! Like one thread for many buffers? That sounds interesting. Although it may end up slower if there are a lot of buffers. I haven't gotten anything setup for that no. It'd be nice to add, maybe not for 1.2.X as work is already piled up quite a lot there, but hopefully soon after that. I'm thinking of separating all bits and pieces like the mail box and such into the consumer's workspace in 1.2.X and do control via templates and mixins so the user will have no idea it is even happening in the background. Thinking of a way to do what you proposed in a simple and user friendly way is going to be a feat in itself.
Originally, I thought you meant that how you could have one source for multiple buffers. Just fyi, it's like this as I already made an example script to showcase it anyways and it'd be a waste not to show it..

#!/usr/bin/env dub
/+ dub.sdl:
name "app"
dependency "elembuf" version="~>1.1.5"
dflags "-release" "-m64" "-boundscheck=off" "-O" platform="dmd"
dflags "-O4" "--release" "--boundscheck=off" platform="ldc2"
+/

// dmd.exe  -release -m64 -boundscheck=off -O  buffer.d
// ldc2 -O4 --release --boundscheck=off buffer.d

import buffer;

import std.stdio;
import std.datetime.stopwatch;
import core.atomic;
import core.thread, std.concurrency;

const n=100_000; //;_000
enum amount = n;

void main() //line 22
{
	version (Windows)
		enum buffercount = 1; // Unfortunately 1 is max for Windows
	else
		enum buffercount = 8; // Every linux machine has a modifiable maximum as a config file. It is safe to assume that the maximum is quite large.

	Buffer!(size_t, true)[] buffers; // Setup a buffer container

	 // Add slots for buffers. This is more optimal that individually concating each buffer.
	buffers.reserve(buffercount);

	// Create a function source.
	size_t function(size_t[]) src = (size_t[] x) {x[0] = 1; return 1; }; // Fill the number 1 to the start of the buffer and return count written.

	// Init each buffer
	foreach(i; 0..buffercount)
	{
		buffers ~= Buffer!(size_t,true)();

		// Create a source
		buffers[i].fill = src;
	}

	// Start filling!
	auto i = 0; // Count of fills

	"start!".writeln;

	// START!
	StopWatch sw;
   	sw.start();

	while(i < amount)
	{
		foreach(ref buf; buffers)
		{
			// The windows limitation would not take much effect as all is popped, but if anything would be left over then some buffer might write on it.
			buf.fill();

			if(buf.length == 1) // Producer made it in a timely manner with his data! Hurray!
			{
				buf = buf[$..$]; // Pop all.
				i++;
			}
		}
	}

	sw.stop();
   	writeln("finished receiving");
   	writefln("received %d messages in %d msec sum=%d speed=%d msg/msec", n, sw.peek().total!("msecs"), i, n/sw.peek().total!("msecs"));

}

In the loop, you set the src:
		buffers[i].fill = src;

Let's suppose the src is actually a delegate which has external vars and will have to do expensive computation to generate a new item; and once a new item generated, this precious item need to be feed into all the 8 buffers. How would you handle this in the above code?  That is my question.
I don't mind I have open issues. We can continue the discussion here, or you can create a PR with the above code either in your repo, or mine.
(As a side question: what's the typical upper limit of the number of such buffers on Linux?)

I think this important information better to be in the Readme.md:
[WINDOWS] on Windows systems, you can only have one Elembuf; additional instances will become slices of the original buffer.
and put at the top.
As code doc, at least I missed it.

In the loop, you set the src:
		buffers[i].fill = src;

Let's suppose the src is actually a delegate which has external vars and will have to do expensive computation to generate a new item; and once a new item generated, this precious item need to be feed into all the 8 buffers. How would you handle this in the above code? That is my question.

Well there are multiple methods actually. I'll list the methods from least efficient to most efficient:

Redoing the calculations

This is the same as what I did in the example code above. You would have to ensure that the external variables are reset after each successful fill, so that the delegate acts as if it were pure.

Copying

You could manually read the function delegate and do an array fill to each buffer
T[] itemToCopy = func();

foreach(i;0..bufferCount)
   buffers[i].fill(itemToCopy);

If the buffers are threaded buffers, then you should get equal or more than itemToCopy.length amount of items from the producer and rewrite the data to itemToCopy once it arrives. Another option for this would be to directly command the producer to fill itemToCopy via a delegate that does not mutate itemToCopy, so that other buffers may use it as well.

Buffer slices

This is my favorite so far, but requires in-depth knowledge from the programmer. I have examples of this in the docs as well in the expert -level examples. The general gist is that you are taking a slice of the actual buffer. It sees all the changes you do to the original buffer and the original sees all changed you do to the slice. You need to be careful though as passing it by parameter does de-allocate the original buffer. Instead you should always use only globals as shown in the documentation.

Normal slices

These are much more user friendly. They are the exact same as Buffer slices, but they do not have .fill or anything else from the library. It sees the changes of the buffer and can be passed by parameter to functions and such without risking de-allocation of the buffer. If the original buffer is popped and you wish to pass a slice to a function, do not let the slice see popped data if the function is a mutating one as that is actually the producer's data immediately after popping. With buffer slices as well.

I don't mind I have open issues. We can continue the discussion here, or you can create a PR with the above code either in your repo, or mine.

In that case it is fine by me. 😄

(As a side question: what's the typical upper limit of the number of such buffers on Linux?)

It's been a long time since I researched this as this is a two year project. You can check the possible errors on memfd_create for linux and shm_open for posix and go from there. Although I'm quite sure that before any limit on buffers you're going to hit the maximum memory limit.  File descriptor limit is something I'd look at, I've found something, but doesn't really tell the amount that is generally in a system as it changes per distro basis link

Heya,
Thank you for checking out elembuf and pointing out parts of the library that require further simplification. I've now went with the idea of removing all methods and just using the overrides and methods that already exist in d objects so that the user doesn't need to learn new method names. It's become much simpler to use now in 1.2.X. I also added the ability to add just one item and there is now just one fill, concat. Implicit conversion is now a thing as well. The documentation has had a huge overhaul, with larger font sizes and simple  display design even on mobile devices. I recommend you check it out. 😃
// Import
import elembuf;

// Instantiate
auto buf = buffer("Hello ");

// Ensure new data fits
assert(buf.max >= "world!".length + buf.length);

// Fill
buf ~= "world!";

// Read
assert(buf == "Hello world!");

I just tried it: 1.2.2
https://github.com/mingwugmail/liblfdsd/blob/master/comparison/elembuf_wait_free_queue.d
However, it seems to hang.  Can you have a check if anything is wrong?
Also I updated:
https://github.com/mingwugmail/liblfdsd/blob/master/comparison/elembuf_sync_queue.d
it become slower: speed=2734 msg/msec
with previous v1.1.5 speed=3693 msg/msec

@mingwugmail

I just tried it: 1.2.2
https://github.com/mingwugmail/liblfdsd/blob/master/comparison/elembuf_wait_free_queue.d
However, it seems to hang. Can you have a check if anything is wrong?

If you check the docs, with the threadedbuffer, you don't actually pass in src twice. You first give the source to the background thread and then pass buf.source, which is actually just a null 😛. What you're doing is continuously telling the buffer to switch sources to the same exact one.

changed, still hang:
https://github.com/mingwugmail/liblfdsd/blob/master/comparison/elembuf_wait_free_queue.d#L63
Can you send a PR :-)

changed, still hang:
https://github.com/mingwugmail/liblfdsd/blob/master/comparison/elembuf_wait_free_queue.d#L63
Can you send a PR :-)

I see. You had the wrong constructor.  Buffers cannot be passed by parameter otherwise unless it is made explicit.

#!/usr/bin/env dub
/+ dub.sdl:
name "app"
dependency "elembuf" version="~>1.2.2"
dflags "-release" "-m64" "-boundscheck=off" "-O" platform="dmd"
dflags "-O4" "--release" "--boundscheck=off" platform="ldc2"
+/

import std.stdio;
import std.datetime.stopwatch;
import core.atomic;
import core.thread, std.concurrency;

import elembuf;

const n=1_000_000_000; //;_000
enum amount = n;

void main() //line 22
{
    auto buffer = tbuffer(size_t[].init);

	size_t srci = 0; // Source index
	size_t consi = 0; // Consumer index

    size_t sum = 0;

    size_t delegate(size_t[]) src = (size_t[] x) // Tell background thread about source
    {
		const needToFill = amount - srci;

		if( x.length >= needToFill ) // Final fill!
		{
			foreach(i;0..needToFill){
				x[i] = srci;
				srci++;
			}
			return needToFill;
		}
		else // Long way to go still...
		{
			foreach(ref i;x){
				i = srci;
				srci++;
			}
			return x.length;
		}

    };

	buffer ~= src;

	// START!
	StopWatch sw;
   	sw.start();

	while(consi < amount)
	{
		buffer ~= buffer.source;

		foreach(elem; buffer)
			sum += elem;

		consi += buffer.length;

		buffer = buffer[$..$];
	}

	sw.stop();
   	writeln("finished receiving");
   	writefln("received %d messages in %d msec sum=%d speed=%d msg/msec", n, sw.peek().total!("msecs"), sum, n/sw.peek().total!("msecs"));

buffer.deinit; // Kill the producer

}

ok, done.

@mingwugmail
I've found a bug from Elembuf using your synchronized script. I'll be posting you the new version once available in dub. The issue is that I wasn't expecting people to use shared, so D is using normal concat instead of the custom concat if shared memory is used.

@mingwugmail
Here is the synchronized version. Dub should update soon.

 synchronized elembuf
#!/usr/bin/env dub
/+ dub.sdl:
name "app"
dependency "elembuf" version="~>1.2.3"
dflags "-release" "-m64" "-boundscheck=off" "-O" platform="dmd"
dflags "-O4" "--release" "--boundscheck=off" platform="ldc2"
+/

// dmd.exe  -release -m64 -boundscheck=off -O  buffer.d
// ldc2 -O4 --release --boundscheck=off buffer.d

import std.stdio;
import std.concurrency : receiveOnly, send, spawn, Tid, thisTid;
import std.datetime;
import core.atomic : atomicOp, atomicLoad, MemoryOrder;

import elembuf;

alias T = int;

/*
Queue that can be used safely among
different threads. All access to an
instance is automatically locked thanks to
synchronized keyword.
*/
synchronized class SafeQueue(T) // Syncronised is SLOW as it is a mutex on everything! Use atomics with a shared or __gshared variable.
{
    // Note: must be private in synchronized
    // classes otherwise D complains.
    //private T[] elements;
    alias BufferT = typeof(buffer(T[].init));
    private shared BufferT elements;

    //alias elements this;

    this(bool uselessVariable) // Constructor must not have 0 parameters.
	{
        // We cannot pass a buffer as it will deallocate when it exits scope. Thus we construct it here locally in the class and pass it on as a non-destructable global.
        elements = buffer(T[].init);
	}

    T opIndex(size_t i)
	{
        return elements[i];
	}

    auto ptr()
	{
        return elements.ptr;
	}

    auto length()
	{
        return elements.length;
	}

    enum max = elements.max;

    void push(T value)
	{

        // auto arr = [value];
		elements ~= value;

    }

    /// Return T.init if queue empty
    void pop() {
        //import std.array : empty;

		//if (elements.empty)
        elements = elements[1 .. $];
    }
}

//This must be a module variable so that once it exits producer scope,
//it does not deallocate before the consumer is done
//this is due to RAII, but will be removed in 1.2.X with explicit deinit function calls.

/*
Safely print messages independent of
number of concurrent threads.
Note that variadic parameters
are used
for args! That is args might be 0 .. N
parameters.
*/
void safePrint(T...)(T args)
{
    // Just executed by one concurrently
    synchronized {
        import std.stdio : writeln;
        writeln(args);
    }
}

const n=100_000_000;

//shared int global_tls = 0;

void threadProducer(shared ref SafeQueue!(T) queue,
					shared(int)* queueCounter)
{
    debug{
		scope(failure)
		{
			assert(0, "threadProducer error");
		}
	}

    // Push values 0 to n-1
    foreach (i; 0..n) {

        while(queue.length == queue.max){} // You cannot fill forever, only fill when there is space available, i.e. buf.avail > 0

		queue.push(i); // Push will write element to available space. If pushed without available space, thread will error.

        //if(i % 1000 == 0)
        //safePrint("Pushed ", i);
        atomicOp!"+="(*queueCounter,1);
        //atomicOp!"+="(global_tls,1);
    }
	//safePrint("threadProducer:", atomicLoad(global_tls));
}

void threadConsumer(Tid owner,
                    shared ref SafeQueue!(T) queue,
					shared(int)* queueCounter)
{

    debug{
		scope(failure)
		{
			assert(0, "threadConsumer error");
		}
	}

	StopWatch sw;
	sw.start();
	long s = 0;

    int popped = 0;
    while (popped != n) // IMPORTANT! This was popped = n, but it should be < n, because we start from 0, so the last pop should be n-1
	{
        if(queue.length == 0)
            continue;

		s += queue[0];

        // if (i == int.init) continue; //If you wish sum to be correct, this should not be done as the first item should be 0.
        //safePrint("Popped ", queue[0], " (Consumer pushed ", atomicLoad(*queueCounter), ")");
        queue.pop;

        ++popped;
        // safely fetch current value of
        // queueCounter using atomicLoad
		//atomicOp!"-="(global_tls,1);
    }

	sw.stop();
	//safePrint("threadConsumer:", atomicLoad(global_tls));
	safePrint("finished receiving");
	safePrint("received ",n," messages in ",sw.peek().msecs," msec sum=",s," speed=",n/sw.peek().msecs," msg/msec");

    // I'm done!
    owner.send(true); // Only send this after you are actually done and not printing.
}

void main()
{
    shared SafeQueue!(T) queue = new shared SafeQueue!T(true);
    // Buffer would deallocate when it exits the first spawn function scope if it were constructed here.
    // Thus we construct it inside the class. See EXPERT -level docs.
    shared int counter = 0;

    spawn(&threadProducer, queue, &counter);
	auto consumer = spawn(&threadConsumer, thisTid, queue, &counter);

	auto stopped = receiveOnly!bool;
    assert(stopped); // Ensure both threads are terminated
    assert(queue.length == 0); // Ensure both threads did their job correctly.

    //readln; // Had to add this as it goes away too fast for me. REMOVE THIS LINE!

}