sleep-on-lan: init at 1.1.1

Description of changes
Multi-platform process allowing to sleep on LAN a linux or windows computer, through wake-on-lan (reversed) magic packets or through HTTP REST requests.
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 223285 run on x86_64-linux 1

1 package built:

sleep-on-lan


List of choices evalued via reified match.

Context
Hi,
I'm trying to create a system for defining enum entries via a choice of either a label (<label>) only or a label and ordinal (<label> = <ord>). This is then used in one of two (maybe more later) macros that expand to either the full enum entry definitions or to the stringified labels.
Example
// Converts to entries
#define ENUM_ENTRIES(...) { ... }
// Converts to stringified names
#define ENUM_ENTRY_NAMES(...) { ... }

#define testEnumEntries \
	ENUM_ENTRY(entry_a), \
	ENUM_ENTRY_ORD(entry_b, 2)

typedef enum {
	ENUM_ENTRIES(testEnumEntries)
} test_enum;

const char* test_enum_names[2] = {
	ENUM_ENTRY_NAMES(testEnumEntries)
};

Resulting in
typedef enum {
	entry_a,
	entry_b = 2
} test_enum;

const char* test_enum_names[2] = {
	"entry_a",
	"entry_b"
};

Implementation
To implement this, I have gone with macros for defining enum entries that create choice variants and then an evaluation via matching that is applied over a given list of entries:
#define ENUM_ENTRY(name) ML99_choice(v(ENUM_ENTRY), v(name))
#define EUNM_ENTRY_ORD(name, id) ML99_choice(v(EUNM_ENTRY_ORD), v(name), v(id))

#define createEnumEntry_ENUM_ENTRY_IMPL(name) v(name)
#define createEnumEntry_EUNM_ENTRY_ORD_IMPL(name, id) v(name = id)
#define createEnumEntry(entry) ML99_match(entry, v(createEnumEntry_))
#define enumEntryExtractName(choice) ML99_stringify(ML99_tupleGet(0)(ML99_tuple(ML99_choiceData(choice))))

#define ENUM_ENTRIES(...) ML99_LIST_EVAL_COMMA_SEP( \
    ML99_listMap( \
        ML99_reify(v(createEnumEntry)), \
        ML99_list(__VA_ARGS__) \
    ) \
)
#define ENUM_ENTRY_NAMES(...) ML99_LIST_EVAL_COMMA_SEP( \
    ML99_listMap( \
        ML99_reify(v(enumEntryExtractName)), \
        ML99_list(__VA_ARGS__) \
    ) \
)

#define testEnumEntries \
    ENUM_ENTRY(entryA), \
    EUNM_ENTRY_ORD(entryB, 3)

typedef enum {
    ENUM_ENTRIES(testEnumEntries)
} test_enum;

const char* test_enum_names[2] = {
    ENUM_ENTRY_NAMES(testEnumEntries)
};

Output
However, this does not yield the expected result, rather the following
typedef enum {
	(0args,
	    ML99_match, (ENUM_ENTRY,
	    entryA), (0v,
	    createEnumEntry_)) , (0args,
	    ML99_match, (EUNM_ENTRY_ORD,
	    entryB, 3), (0v,
	    createEnumEntry_))
} test_enum;

const char* test_enum_names[2] = {
    (0args, ML99_stringify, (0args, ML99_PRIV_tupleGet_0, (
                                 0args, ML99_tuple, (0args, ML99_choiceData, (ENUM_ENTRY, entryA))))),
    (0args, ML99_stringify, (0args, ML99_PRIV_tupleGet_0, (
                                 0args, ML99_tuple, (0args, ML99_choiceData, (EUNM_ENTRY_ORD, entryB, 3)))))
};

Notes
Im using GCC 12.3.0, specifically mipsel-none-elf-gcc for targeting an R3000 MIPS-2 arch (so a bit of a weird setup, but shouldn't change anything in the preprocessor eval AFAICT).
From what I understand (from my limited knowledge of Metalang99), the result of each element being passed through the reified createEnumEntry macro has not actually been evaluated when ML99_LIST_EVAL_COMMA_SEP was applied, rather the list was assembled from the results but the evaluation context did not pass down into the list elements (Referencing #26 since it has to have, on the surface, the same result). I would assume this means that at some level of the createEnumEntry variants I need to do some evaluation that is then passed as a literal. Though I'm ensure as to whether that is actually the case or I've misunderstood the utilisation of choices through lists and the application of reified macros via (what I assume under the hood is) ML99_appl(...).
Could I get a hand with understanding what I'm missing here?

What you get is the internal representation of a Metalang99 terms. To evaluate it, you can use ML99_EVAL:
typedef enum {
    ML99_EVAL(ENUM_ENTRIES(testEnumEntries))
} test_enum;

const char* test_enum_names[2] = {
    ML99_EVAL(ENUM_ENTRY_NAMES(testEnumEntries))
};

Thanks for the fast reply! Indeed, I thought that might have been the case, so I tried with direct evaluation before, without the desired result:
ML99_PRIV_REC_NEXT_ML99_PRIV_EVAL_ENUM_ENTRY(ML99_PRIV_EVAL_0callUneval_K, (ML99_PRIV_REC_STOP, (~), 0fspace, (, ),
 ((0args,
    ML99_match, (EUNM_ENTRY_ORD,
    entryB, 3), (0v,
    createEnumEntry_)), (0end, ~), ~),
    ML99_match), 0fcomma, (), ((0v,
    createEnumEntry_), (0end, ~), ~),
    entryA)(1)()

This seems peculiar to me, almost like the form was evaluated correctly but then re-parsed into ML99 terms before being output to the source file?

Apologies for the confusion, now I see that your code already uses ML99_LIST_EVAL_COMMA_SEP.
The real problem is that ML99_reify expects an "ordinary" functional macro (whose expansion is just wrapped in v(...)), while your createEnumEntry and enumEntryExtractName macros expand to Metalang99 terms. To fix it, you can rewrite the code as follows:
#define ENUM_ENTRY(name) ML99_choice(v(ENUM_ENTRY), v(name))
#define EUNM_ENTRY_ORD(name, id) ML99_choice(v(ENUM_ENTRY_ORD), v(name), v(id))

#define createEnumEntry_ENUM_ENTRY_IMPL(name) v(name)
#define createEnumEntry_ENUM_ENTRY_ORD_IMPL(name, id) v(name = id)

#define createEnumEntry_IMPL(entry) ML99_match(v(entry), v(createEnumEntry_))
#define createEnumEntry_ARITY 1

#define enumEntryExtractName_IMPL(choice) ML99_stringify(ML99_tupleGet(0)(ML99_tuple(ML99_choiceData(v(choice)))))
#define enumEntryExtractName_ARITY 1

#define ENUM_ENTRIES(...) ML99_LIST_EVAL_COMMA_SEP( \
    ML99_listMap( \
        v(createEnumEntry), \
        ML99_list(__VA_ARGS__) \
    ) \
)
#define ENUM_ENTRY_NAMES(...) ML99_LIST_EVAL_COMMA_SEP( \
    ML99_listMap( \
        v(enumEntryExtractName), \
        ML99_list(__VA_ARGS__) \
    ) \
)

(I've also fixed a number of typos such as EUNM.)
The expansion will be:
typedef enum {
    entryA , entryB = 3
} test_enum;
const char* test_enum_names[2] = {
    "entryA" , "entryB"
};

Ahh ok that makes more sense to me now, thanks for taking the time to explain that and debug. Much appreciated 🙇🏼


macOS 15: Black image and warning

Your readme sample:
package main

import (
	"image/jpeg"
	"os"

	"github.com/pion/mediadevices"
	"github.com/pion/mediadevices/pkg/prop"

	// This is required to register camera adapter
	_ "github.com/pion/mediadevices/pkg/driver/camera"
	// Note: If you don't have a camera or your adapters are not supported,
	//       you can always swap your adapters with our dummy adapters below.
	// _ "github.com/pion/mediadevices/pkg/driver/videotest"
)

func main() {
	stream, _ := mediadevices.GetUserMedia(mediadevices.MediaStreamConstraints{
		Video: func(constraint *mediadevices.MediaTrackConstraints) {
			// Query for ideal resolutions
			constraint.Width = prop.Int(600)
			constraint.Height = prop.Int(400)
		},
	})

	// Since track can represent audio as well, we need to cast it to
	// *mediadevices.VideoTrack to get video specific functionalities
	track := stream.GetVideoTracks()[0]
	videoTrack := track.(*mediadevices.VideoTrack)
	defer videoTrack.Close()

	// Create a new video reader to get the decoded frames. Release is used
	// to return the buffer to hold frame back to the source so that the buffer
	// can be reused for the next frames.
	videoReader := videoTrack.NewReader(false)
	frame, release, _ := videoReader.Read()
	defer release()

	// Since frame is the standard image.Image, it's compatible with Go standard
	// library. For example, capturing the first frame and store it as a jpeg image.
	output, _ := os.Create("frame.jpg")
	jpeg.Encode(output, frame, nil)
}

produces a black jpg image and a warning:
2024-09-29 14:02:57.738 main[32584:2261337] [WARNING] skipping BGRA 83009664x734089728 since it's not supported

... ok with videotest


Google ClientLogin deprecated

I can't seem to run fab add_graphic:mygraphic because of a failed authentication attempt with Google.
File "[...]/etc/gdocs.py", line 70, in get_auth
self.auth = r.content.split('\n')[2].split('Auth=')[1]
IndexError: list index out of range

I tried making the same post request manually and got a 403 forbidden response with the header message "BadAuthentication". Indeed, the ClientLogin API seems to have been deprecated a while back..

Hello! Apologies for the delayed response. Yes, syncing with Google didn't work if you were using a Google account that had two-factor authentication enabled. We've just rolled in support for OAuth authentication instead.


Use a virtual prefix for Vite plugin

This adds an explicit prefix to virtual modules generated by the Vite plugin.
It helps tell Vite that these files don't exist so it doesn't try to optimise them (it seems to fix #397) and fixes https://github.com/zenclabs/reactpreview/issues/52.
See https://vitejs.dev/guide/api-plugin.html#importing-a-virtual-file for more info. Note the / prefix is required or Vite automatically adds an additional /@id/ to the module ID before load() gets invoked (I'm not sure why).
I've tested this change manually but I'm not 100% confident that I haven't broken anything. I was wondering if setting up some tests in the form of a simple app with associated Puppeteer tests would be beneficial too?

Hey Bud 👋
I'm not really sure what is being fixed here? The docs you pointed to are just an example, I don't see anywhere where it says all virtual modules must start with a special character. Can  we get a bit more context on what the actual problem is?
Also there is a playwright test suite already.

Hey Bud 👋

Hi from Sydney!

I'm not really sure what is being fixed here? The docs you pointed to are just an example, I don't see anywhere where it says all virtual modules must start with a special character. Can we get a bit more context on what the actual problem is?

I'll admit I don't understand all the details of how Vite works, but some parts of Vite will crash (as shown in #397) because they see a module ID that seems to correspond to a real file, and fail to access it from the file system. This prefix is common in Vite plugins, for example see https://github.com/vitejs/vite/issues/2380#issuecomment-796902541.

Also there is a playwright test suite already.

I meant a test specifically for the Vite plugin, I couldn't find one :)

Hey, I'm still not really sure what this PR addresses? #397 has already been resolved and the fix was unrelated. Going to close this for now but if there's something I've missed then let me know.


Fix 'changed' on angle type

Fixes: #2426

Looks like table is in the excluded_types table so I need to actually use a type for the function definition that isn't excluded.


Shrinking image size

Moved build deps into the /bin/install script
New image size is 188mb
@masneyb
@ajmath
@rhussmann
@kelcecil
@MichaelRBond
@jdavis92
@alexjpaz
@brendangibat
@jmmartin
I think that's all of the people who commented on #34.  Could someone test this PR before I merge it.

I'll test it tomorrow if someone doesn't beat me to it.
On Sun, Jan 22, 2017 at 2:16 PM Shane Starcher<EMAIL_ADDRESS>wrote:

Moved build deps into the /bin/install script
New image size is 188mb
@masneyb https://github.com/masneyb
@ajmath https://github.com/ajmath
@rhussmann https://github.com/rhussmann
@kelcecil https://github.com/kelcecil
@MichaelRBond https://github.com/MichaelRBond
@jdavis92 https://github.com/jdavis92
@alexjpaz https://github.com/alexjpaz
@brendangibat https://github.com/brendangibat
@jmmartin https://github.com/jmmartin
I think that's all of the people who commented on #34
https://github.com/sstarcher/docker-sensu/pull/34. Could someone test
this PR before I merge it.
You can view, comment on, or merge this pull request online at:
https://github.com/sstarcher/docker-sensu/pull/37
Commit Summary

Shrinking image size

File Changes

M Dockerfile
https://github.com/sstarcher/docker-sensu/pull/37/files#diff-0 (31)
M bin/install
https://github.com/sstarcher/docker-sensu/pull/37/files#diff-1 (16)

Patch Links:

https://github.com/sstarcher/docker-sensu/pull/37.patch
https://github.com/sstarcher/docker-sensu/pull/37.diff

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/sstarcher/docker-sensu/pull/37, or mute the thread
https://github.com/notifications/unsubscribe-auth/AAWzdecxN46lz7QPRjTWDkn_uQGG6y8Aks5rU6r_gaJpZM4LqeOR
.

173.9mb after dropping ruby gem cache/doc

I tested this against our image and ran into an issue. Here is a snippet of our Dockerfile:
RUN apt-get update && apt-get -y curl # and some other packages
RUN /bin/install mailer pagerduty
# Curl is no longer installed after install runs

On line 6 of your existing Dockerfile, you already install curl and leave it in that layer. I suggest dropping curl from the DEBIAN_TOOLING variable in the install script.
Brian

@masneyb what is using curl?

We use curl in our Dockerfile that is based off your image to install additional dependencies.
You install curl in your first RUN command and later delete it in a different layer at the end of the install command. Removing curl at that point won't actually shrink the image size unless the image layers are squashed.
Brian

Here is an example Dockerfile that is based off your image that illustrates the problem:
FROM this_branches_image_id_from_docker_build
RUN apt-get update && apt-get install -y curl
RUN /bin/install pagerduty
# Curl is no longer installed after /bin/install runs
RUN curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"

Brian

@masneyb I'll keep curl installed.  Try again

:shipit:


add "trust proxy"

support reverse proxies.

Coverage remained the same at 94.24% when pulling 56543d3907a2d716f1a52f7d3c88b6ddaabc31d4 on matiu:feat/proxy into 355290040a4a042c9069b572e7cbfe0e544a4e29 on bitpay:master.


I want to display text value

Is it possible?

I found it.
It is possible if I use [List Unique Values].


Novel system, first impressions: don't direct a newcomer to anything that has closed down

Falkon: first impressions of system-provided bookmarks should not include a service https://invidio.us/ that has closed down.
Instead, via (for example) https://github.com/iv-org/invidious/issues/1320#issuecomment-667595476:

https://instances.invidio.us/

Eventually, via https://github.com/iv-org/invidious/issues/1694:

https://invidious.io/

Well, I liked to this page because it conveniently lists all the different instances.
It's indeed a bit unfortunate that they don't just say "here are different options to choose from".

Well, I liked to this page because it conveniently lists all the different instances.
It's indeed a bit unfortunate that they don't just say "here are different options to choose from".

Suggestions for other privacy-respecting services are also always welcome.

Suggestions for other privacy-respecting services are also always welcome.

Thanks; and (at a glance) the list at https://instances.invidio.us/ is longer than at https://invidio.us/
For content go-live at the recently announced domain, I'm subscribed to https://github.com/iv-org/invidious/issues/1694

Thanks; and (at a glance) the list at https://instances.invidio.us/ is longer than at https://invidio.us/
For content go-live at the recently announced domain, I'm subscribed to https://github.com/iv-org/invidious/issues/1694

@probonopd https://github.com/iv-org/invidious/issues/1694 read the announcement:

invidio.us is now deprecated, and later will only redirect to invidious.io.

invidio.us is now deprecated, invidious.io is the new domain.

The invidious-redirect website ( invidio.us ) is now https://redirect.invidious.io/

@probonopd https://github.com/iv-org/invidious/issues/1694 read the announcement:

invidio.us is now deprecated, and later will only redirect to invidious.io.

invidio.us is now deprecated, invidious.io is the new domain.

The invidious-redirect website ( invidio.us ) is now https://redirect.invidious.io/

Hello @TheFrenchGhosty thanks for chiming in.
I understand we should link to the invidious.io domain, but is there a page that just lists the various instances without mentioning

As of September 1st 2020, invidio.us has closed down.
To see this content, please select another instance,
or visit directly on YouTube.

As @grahamperrin has outlined, it does not leave the best impression if we put a link into the operating system that points to something that "has closed down".
We would like to see a page that says something like "Watch videos with your privacy being valued. Please choose from one of many instances" or something like that.
Is there such a page?

Hello @TheFrenchGhosty thanks for chiming in.
I understand we should link to the invidious.io domain, but is there a page that just lists the various instances without mentioning

As of September 1st 2020, invidio.us has closed down.
To see this content, please select another instance,
or visit directly on YouTube.

As @grahamperrin has outlined, it does not leave the best impression if we put a link into the operating system that points to something that "has closed down".
We would like to see a page that says something like "Watch videos with your privacy being valued. Please choose from one of many instances" or something like that.
Is there such a page?

@probonopd We do plan to change that on invidious.io, I don't really know what this project is, but depending on what you need invidious.io might be what you need.

@probonopd We do plan to change that on invidious.io, I don't really know what this project is, but depending on what you need invidious.io might be what you need.

… what this project is …

https://hellosystem.github.io/docs/index.html
https://youtu.be/Ah8xZ1N68Vo?t=394 Falkon is the default browser and system-provided bookmarks included https://invidio.us/
For now, https://github.com/helloSystem/ISO/commit/d9ed6446f8b5bd034503b101be606af6d0fcfefa sets a more appropriate system-provided bookmark.

… what this project is …

https://hellosystem.github.io/docs/index.html
https://youtu.be/Ah8xZ1N68Vo?t=394 Falkon is the default browser and system-provided bookmarks included https://invidio.us/
For now, https://github.com/helloSystem/ISO/commit/d9ed6446f8b5bd034503b101be606af6d0fcfefa sets a more appropriate system-provided bookmark.

@grahamperrin Thanks for the information.

For now, d9ed644 sets a more appropriate system-provided bookmark.

The problem is that, as I said in the announcement:

invidio.us is now deprecated, and later will only redirect to invidious.io.

No project should use invidio.us since we can't guarantee it's availability (since we don't own the domain name).
We really encourage everything to move away from it as fast as possible.

@grahamperrin Thanks for the information.

For now, d9ed644 sets a more appropriate system-provided bookmark.

The problem is that, as I said in the announcement:

invidio.us is now deprecated, and later will only redirect to invidious.io.

No project should use invidio.us since we can't guarantee it's availability (since we don't own the domain name).
We really encourage everything to move away from it as fast as possible.

So is there any page on invidious.io that does not include words like "coming soon", "closed down", etc. but just lists the available instances? Then we would like to link to that.

So is there any page on invidious.io that does not include words like "coming soon", "closed down", etc. but just lists the available instances? Then we would like to link to that.

More recent discussion under https://github.com/iv-org/invidious/issues/1694 👍

More recent discussion under https://github.com/iv-org/invidious/issues/1694 👍


⚠ TiendaEnLinea has degraded performance

In 421c3b3, TiendaEnLinea (https://www.fahorro.com/) experienced degraded performance:

HTTP code: 200
Response time: 5281 ms

Resolved: TiendaEnLinea performance has improved in d0405d9.


I get an "Killed" error on trying to load the checpoints

This happens when you run out of memory.


 Can someone help me please ?

it's okay I found the solution


More used nz icon

PR Checklist
Please check if your PR fulfills the following requirements:

[x] The commit message follows our guidelines: https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/CONTRIBUTING.md#commit
[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)

PR Type
What kind of change does this PR introduce?

[x] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] CI related changes
[ ] Documentation content changes
[ ] Application (the showcase website) / infrastructure changes
[ ] Other... Please describe:

What is the current behavior?

Issue Number: N/A
Bundling ng-zorro-antd to a webpack dll should imports all used icons
What is the new behavior?
Some icons are missing
Does this PR introduce a breaking change?
[ ] Yes
[x] No

Other information
The NZ_ICONS_USED_BY_ZORRO is a non-compulsory contract between the component authors and the bundler. It is not easy and straightforward for authors to write nz-icon type="foo" and then just remember to check the nz-icon service whether the icon FooOutline is registered. What's more, the typical usage of ng-zorro-antd will not bail in most situations where a full ant-desigin/icons-angular is served, thus it is more difficult for author to recognize such kinds of error without testing against the other situations.
That is why I find out there are 5 components missing explicit icon import --- people just don't know about there is, mentally, such kind of after-use-nz-icon-type hook.
Proposed solution
A perfect solution will not land without an architect change of ant-design/icons-angular. But we can kindly remind authors to register icon usage in our PR template. A checklist, i.e.
### component template
- [ ] Added icon import on `components/icon/nz-icon.service.ts`

will help on this scenario.

May I ask do you include icons that are only used in demos?

No. I searched the termnz-icon with file mask *.component.html in the scope of path/to/ng-zorro-antd/components, so I don't think the icons used in demos would be matches.


License

Looks cool. Can you add a license like MIT or whatever you want?

Added. Thanks for the reminder!


fix(camunda-plugin): do not update credentials on non existing endpoints

Which issue does this PR address?
Closes #1991
Acceptance Criteria

[ ] Corresponds to the concept
[ ] Corresponds to the design

Definition of Done

[ ] corresponds to the design principles
[ ] corresponds to the code standards
[ ] passes Continuous Integration checks
[ ] available as feature branch on GitHub

[ ] contains the cleaned up commit history
[ ] commit messages satisfy our commit message guidelines
[ ] a single commit closes the issue via Closes #issuenr

Note for the reviewer: I firstly thought of refactoring the credential saving to the Deployment tool entirely, so that the DeploymentConfigModal is not doing the actual saving.
// (2.3.2) Handle overriding credentials on close
if (action === 'close') {
  return await this.handleOverrideCredentials(userConfiguration);
}

But as I found out, making it available to execute the API from outside was a design decision back when it was implemented. Makes sense to de-couple the deployer from this special use case of the Modal, though.


Cleanup some amp related behaviour to better support different (non-cuda) devices

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.


No chants in my local database have a differentia_new value

looking into #694, I discovered that none of the chants in my local database have a differentia_new value:
>>> from main_app.models import Chant
>>> w_diff_n = Chant.objects.filter(differentia_new__isnull = False)
>>> w_diff_n.first()
>>> w_diff_n.count()
0

We may need to update our data syncing scripts, as this value is evidently being missed.

see also #693

taking the database from Production and plugging it in locally, this seems not to be a problem. Not sure what was going on here, but it seems no longer to be a problem. Closing.
>>> from main_app.models import Chant
>>> Chant.objects.filter(differentia_new__isnull=False).count()
132128
>>> Chant.objects.filter(differentia__isnull=False).count()
176892


feat: functional induction

This adds the concept of functional induction to lean.
Derived from the definition of a (possibly mutually) recursive function, a functional
induction principle is tailored to proofs about that function. For example from:
def ackermann : Nat → Nat → Nat
  | 0, m => m + 1
  | n+1, 0 => ackermann n 1
  | n+1, m+1 => ackermann n (ackermann (n + 1) m)
derive_induction ackermann

we get
ackermann.induct (motive : Nat → Nat → Prop) (case1 : ∀ (m : Nat), motive 0 m)
  (case2 : ∀ (n : Nat), motive n 1 → motive (Nat.succ n) 0)
  (case3 : ∀ (n m : Nat), motive (n + 1) m → motive n (ackermann (n + 1) m) → motive (Nat.succ n) (Nat.succ m))
  (x x : Nat) : motive x x

At the moment, the user has to ask for the functional induction principle explicitly using
derive_induction ackermann

The module docstring of Lean/Meta/Tactic/FunInd.lean contains more details on the
design and implementation of this command.

This PR includes a bunch of PSum/PSigma related functions in the Lean.Tactic.FunInd
namespace. I plan to move these to PackArgs/PackMutual afterwards, and do some cleaning
up as I do that.

And now a bit of velocipede storage facility color determination: isn't derive_induction a very broad keyword for something fairly specific? What if the syntax were deriving fun induction for f instead? This doesn't add keywords, but it is more specific. Or even deriving functional induction for f with functional being non-reserved?

Thanks for leaving detailed docs, they were generally easy to follow and will be a big benefit to anyone encountering this in the future!

The command keyword is certainly up for discussion.
In Coq a multi word command would be quite idiomatic, but is it so in Lean?
We envision that in the future, when we have a functional induction tactic, the explicit command will actually be rarely used, so happy to use something more verbose and explicit.
I also wonder if “derive” should be used when there is no type class around. What other verb could we use. generate? define?

I like derive here because it minimizes keyword capture. But it is a bit strange - it'll be good when the tactic lazily creates the induction principle. We do already have deriving instance X for Y, which I tried to follow in the suggestion.
I guess the direction that this hints at is having "deriving X ..." commands be a little code-generation DSL that makes various things get built. I don't know if we want to go that way more generally.

Ok, then derive is fine. Between
derive_functional_induction foo
derive functional induction for foo

I think the former is more lean-y. We also say termination_by and not termination by` etc., don't we?

If we're not hooking into the deriving _ for _ syntax, then generate or derive seem equally good to me.
Looking forward to the tactic - this will be a big step up for verified programming!

Consider the following example
inductive Vector (α : Type u) : Nat → Type u
  | nil : Vector α 0
  | cons : α → Vector α n → Vector α (n+1)

def Vector.zip : Vector α n → Vector β n → Vector (α × β) n
  | nil, nil => nil
  | cons a as, cons b bs => cons (a, b) (zip as bs)
termination_by as bs => sizeOf as

derive_functional_induction Vector.zip

We get the following induction principle
Vector.zip.induct.{u_1, u_2} {α : Type u_1} (motive : (x : Nat) → (x_1 : Type u_2) → Vector α x → Vector x_1 x → Prop)
  (case1 : ∀ (fst : Type u_2), motive 0 fst Vector.nil Vector.nil)
  (case2 :
    ∀ (fst : Type u_2) (n : Nat) (a : α) (as : Vector α n) (b : fst) (bs : Vector fst n),
      motive n fst as bs → motive (n + 1) fst (Vector.cons a as) (Vector.cons b bs))
  (x : Nat) (x : Type u_2) (x : Vector α x) (x : Vector x x) : motive x x x x

β has been abstracted although it is a parameter and is fixed.

The induction principle for the following. function has three cases as expected

def g (i : Nat) (as : Array (Fin 2)) : Nat :=
  if _  : i < as.size then
    have : as.size - (i+2) < as.size - i := by omega
    if as[i] = 0 then
      g (i+1) as + 1
    else
      g (i+2) as + 2
  else
    0
termination_by as.size - i

derive_functional_induction g
#check g.induct

But, the induction principle for the following function has only 2.
def f (i : Nat) (as : Array (Fin 2)) : Nat :=
  if _  : i < as.size then
    have : as.size - (i+2) < as.size - i := by omega
    match as[i] with
    | 0 => f (i+1) as + 1
    | 1 => f (i+2) as + 2
  else
    0
termination_by as.size - i

derive_functional_induction f
#check f.induct

@nomeata Pushed a new test with mutual recursion + dependent types. The induction principle looks correct to me, but the variable names look confusing. For example, on case8, it would be great to have ∀ (α : Type) (results : List α) (t1 t2 : Finite), instead of ∀ (fst : Type) (snd : List fst) (t1 t2 : Finite),.

The following example produces a cryptic error message
def takeWhile (p : α → Bool) (as : Array α) : Array α :=
  go 0 #[]
where
  go (i : Nat) (r : Array α) : Array α :=
    if h : i < as.size then
      let a := as.get ⟨i, h⟩
      if p a then
        go (i+1) (r.push a)
      else
        r
    else
      r
  termination_by as.size - i

derive_functional_induction takeWhile -- Cryptic error message

derive_functional_induction takeWhile.go -- Works as expected

Thanks for the review and additional tests! I’ll have a closer look tomorrow.

Re Vector.zip: The problem already starts with Vector.zip itself, where β comes after the first varying parameter and thus isn’t part of the fixed prefix:
Vector.zip._unary.{u_1, u_2} {α : Type u_1} (_x✝ : (n : Nat) ×' (β : Type u_2) ×' (_ : Vector α n) ×' Vector β n) :
  Vector (α × _x✝.2.1) _x✝.1

The induction principle follows the structure of the function definition, so I’d say that part is correct, and the issue needs to be addressed earlier. Not sure if PreDefinition.WF should reorder arguments, or if autoImplicit parameters should be inserted earlier, or if we simply expect people to be explicit in the argument order in cases like this.

As for the variable names, I expect that some (if not all) unfortunate names will improve with my planned refactoring of the argument packing/unpacking infrastructure. Is it ok to merge this with suboptimal names first and refine later, or should I try harder already here?

The induction principle for the following. function has three cases as expected
…
But, the induction principle for the following function has only 2.

I know how to fix that, will do that tomorrow.
It isn’t always clear that more cases are always better, and the heuristic of “split tail-call matches but not other matches” is a bit arbitrary – it’s not actually technically needed, as I initially thought, but it probably often does the right thing. We’ll learn more when people are starting to use it.

The induction principle for the following. function has three cases as expected
…
But, the induction principle for the following function has only 2.

I know how to fix that, will do that tomorrow.

Ah, I remember, it’s not so easy. Consider this example:
def with_match_tailrec : Nat → Nat
  | 0 => 0
  | n+1 =>
    match n % 2 with
    | 0 => with_match_tailrec n
    | _ => with_match_tailrec n

with the current code (extended in the obvious way), we’d get
info: with_match_tailrec.induct (motive : Nat → Prop) (case1 : motive 0)
  (case2 case3 : ∀ (n : Nat), motive n → motive (Nat.succ n)) (x : Nat) : motive x

That’s not helpful. Only if the user writes h : n % 2 in the match, they get the more helpful
info: with_match_tailrec.induct (motive : Nat → Prop) (case1 : motive 0)
  (case2 : ∀ (n : Nat), n % 2 = 0 → motive n → motive (Nat.succ n))
  (case3 : ∀ (n x : Nat), (x = 0 → False) → n % 2 = x → motive n → motive (Nat.succ n)) (x : Nat) : motive x
-

I believe at the moment we don’t have the infrastructure to add these discriminant assumptions afterwards. Maybe forallAltTelescope could learn to create them (optionally)… let’s see.

Ok, I have a plan: The translation should manually add scrut = constr a b c hypotheses to any scrutinee that doesn't already have a user-written h : one, or that isn't refined in the goal.

Plan executed. Excerpt from the module docs:

In addition, the information gathered from the match is preserved, so that when performing the
proof by induction, the user can reliably enter the right case. To achieve this

the matcher is replaced by its splitter, which brings extra assumptions into scope when
patterns are overlapping
simple discriminants that are mentioned in the goal (i.e plain parameters) are instantiated
in the code.
for discriminants that are not instantiated that way, equalities connecting the discriminant
to the instantiation are added (just as if the user wrote match h : x with …)

It’s pushing a bit on the complexity budget, but I agree it is the right thing to do.


apps: add consolidation of errors in node-local-dns

[!warning]
This is public repository, ensure not to disclose:

[ ] personal data beyond what is necessary for interacting with this pull request
[ ] business confidential information, such as customer names

What kind of PR is this?
Required: Mark one of the following that is applicable:

[ ] kind/feature
[x] kind/improvement
[ ] kind/deprecation
[ ] kind/documentation
[ ] kind/clean-up
[ ] kind/bug
[ ] kind/other

Optional: Mark one or more of the following that are applicable:

[!important]
Breaking changes should be marked kind/admin-change or kind/dev-change depending on type
Critical security fixes should be marked with kind/security

[ ] kind/admin-change
[ ] kind/dev-change
[ ] kind/security
[ ] kind/adr

What does this PR do / why do we need this PR?

Adds consolidation of error logs for node-local-dns to avoid log spam during incidents.

Part of #1691

Additional information to reviewers
Screenshots
Checklist

[x] Proper commit message prefix on all commits

Change checks:

[x] The change is transparent
[ ] The change is disruptive
[x] The change requires no migration steps
[ ] The change requires migration steps

Metrics checks:

[x] The metrics are still exposed and present in Grafana after the change
[ ] The metrics names didn't change (Grafana dashboards and Prometheus alerts are not affected)
[ ] The metrics names did change (Grafana dashboards and Prometheus alerts were fixed)

Logs checks:

[x] The logs do not show any errors after the change

Network Policy checks:

[x] Any changed pod is covered by Network Policies
[ ] The change does not cause any dropped packages in the NetworkPolicy Dashboard

Pod Security Policy checks:

[x] Any changed pod is covered by Pod Security Admission
[x] Any changed pod is covered by Gatekeeper Pod Security Policies
[x] The change does not cause any pods to be blocked by Pod Security Admission or Policies

Falco checks:

[x] The change does not cause any alerts to be generated by Falco

Audit checks:

[ ] The change does not cause any unnecessary Kubernetes audit events
[ ] The change requires changes to Kubernetes audit policy

Looks good to me but also wondering about what you wrote in your comment regarding the IPs


Running git fetch only does not guarantee that we have fetched all changes related to tags

Summary
git fetch will not fetch the changes of existing tags in the local repository if that tag has been modified in the remote repository. To be able to fetch that modification, we must run git fetch --force --tags.
Note, before git 2.20, running git fetch --tags has the same behavior as git fetch --force --tags in this scenario (documentation).
Details
From the documentation, the default behavior of git fetch is:
Fetch branches and/or tags (collectively, "refs") from one or more other repositories, along with the objects necessary to complete their histories.
...
By default, any tag that points into the histories being fetched is also fetched; the effect is to fetch tags that point at branches that you are interested in.
...
When no remote is specified, by default the origin remote will be used, unless there's an upstream branch configured for the current branch.
...

With that say, in the context of fetching, when you run git fetch , it will fetch new references (e.g. branches) and the objects necessary to complete their histories (commit objects). It will only fetch the tags that points to the new histories or any new tags from the remote repository (even in the case that new tags point to an old commit that already exists).
However, it will not update an existing tag in the local repository if that tag has been modified in the remote repository. By "modified", I mean that someone would do this:
git tag --delete existing_tag_name
git tag existing_tag_name <another_new_commit>
git push --force --tags

which essentially modify the commit that the tag existing_tag_name is pointing to in the remote repository.
In this case, if you run git fetch on the local repository, existing_tag_name will not be updated to reflect the modification from the remote repository (however, it will not raise any error, and new commits, new branches, new refs are still being fetched as usual).
To make existing_tag_name in the local repository point to another_new_commit you must run:
git fetch --force --tags
Running git fetch --tags only: 1. wouldn't update the modified existing tags, 2. still fetch the new commit history from remote, 3. the command will return an error status code:
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 1 (delta 0), pack-reused 0
Receiving objects: 100% (1/1), 851 bytes | 851.00 KiB/s, done.
From github.com:tromai/test-repo
   14800f3..58b0069  main       -> origin/main
 ! [rejected]        v1.0.0     -> v1.0.0  (would clobber existing tag)

Solution
We have decided that for now, it's better to use git fetch --tags --force to make sure we analyze the most up-to-date version of the repository.

I don't think this should be tagged as a bug. What if analyzing an old commit that already exists locally is preferred? This is a decision made by us to force update the tags, but in general it shouldn't be considered as a bug.

Update
After some more testing, I noticed that if a tag were to be deleted in the remote repository, running git fetch --tags --force won't delete that tag from the local repository. This behavior is similar to branches, where fetching only gains new branches (that are newly created in remote) but doesn't update deleted branches (in remote) to your local git repository.
To make git delete any branches or tags from the local repository if they are deleted from remote, we must run git fetch --tags --force --prune --prune-tags.
Therefore, we have decided to update the final solution to use git fetch --tags --force --prune --prune-tags instead.


Add functions/ocr sample

✅This has already been tested on Cloud Functions itself
Also, I wasn't sure if the OcrTranslateApiMessage POJO was the best way to go - so I'd appreciate thoughts on that.

N.B: I fixed some of the relevant spotbugs errors, but the try-with-resources pattern is causing issues as documented here.

N.B: I fixed some of the relevant spotbugs errors, but the try-with-resources pattern is causing issues as documented here.

I opened https://github.com/GoogleCloudPlatform/java-repo-tools/issues/123 to surpress this everywhere, but for now you should be able to use something like the following on the classes affected:
@SuppressFBWarnings(value = "RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE",
        justification = "Scanning generated code of try-with-resources")

@kurtisvg thanks for the tip RE spotbugs.
It's triggering on other functions samples, so I'll probably fix all of them in a separate PR (to avoid cluttering this one).
I've addressed the non-NPE issues in with these samples, however.

@lesv please LGTM and merge if this looks good to you - thanks!


Added Nahmii Testnet

Added Nahmii Testnet

Works good @bonustrack

@jonddon The image should be a square, can you change it?

I have changed the logo

@jonddon The image should be a square, can you change it?

I have updated the logo


Event Hubs checkpoints should not be case sensitive

Summary
The Event Hubs approach to checkpoints is inconsistent on its assumptions about case sensitivity in the atoms that comprise a checkpoint.  The representatives from each of the languages have agreed to ensure that checkpoints be treated consistently case insensitive across languages to ensure that they are interoperable.
Scope of Work

Ensure that each element that comprises the identity of a checkpoint is treated in a case-insensitive manner and is stored in lowercase form.

As the Event Hubs service has been confirmed to be agnostic to case for concepts like the name of an Event Hub and consumer group, it is recommended that each atom of data stored within a checkpoint is also represented in lowercase form.

Add, remove, or adjust tests to cover the new name and ensure functionality.

Tweak the references in other areas, such as samples, if needed.

Out of Scope

Updates or changes to functionality beyond casing of the checkpoint atoms.

Success Criteria

The entire checkpoint identity is stored as lowercase.

Checkpoints are identified, retrieved, and consumed in a case insensitive manner by the client library and related checkpoint store packages.

The tests necessary for its validation have been created and pass reliably.

The existing test suite continues to produce deterministic results and pass reliably.

Samples and supporting packages have been updated to consume the new name.

This was addressed as part of the resent Event Processor overhaul.   Closing out.


[Feature Request] Support react-router async features

Greeting, thanks for great lib that helps me a lot to integrate exist project with redux.
But as project grows - new challenges comes.
So, react-router has API to lazy-load routes, which is great and react-router-redux has no problem with it.
Implementation was easy, but as I wanted to track loading process of Lazy Components, I faced the problem.
After few minutes I found solution:

// First - Create class decorator

function RouterRoot() {
    return Child => {
        return class RouterChangeHandler extends Component { // TODO: (umidbekkarimov) 4/21/16 - wrap with hoist-non-react-statics
            static displayName = `${Child.displayName || Child.name}RouterChangeHandler`

            static contextTypes = {
                store: PropTypes.any
            };

            componentWillMount() {
                this.context.store.dispatch({
                    type: '@@router/LOCATION_CHANGE_SUCCESS', props: this.props
                });
            }

            componentWillReceiveProps(nextProps) {
                this.context.store.dispatch({
                    type: '@@router/LOCATION_CHANGE_SUCCESS', props: nextProps
                });
            }

            render() {
                return (
                    <Child {...this.props}/>
                );
            }
        };
    };
}

// Then use it on Root Component

@RouterRoot()
export class AppRoot extends Component {
    render() {
        return (

{this.props.children}

        );
    }
}

// Assure that AppRoot - actually at root

export default {
    path: '/',

    component: AppRoot,

    indexRoute: IndexPageContainer,

    childRoutes: [
        // async routes
    ]
};

As you see implementation is pretty easy and react-router will take care of all asynchronous problems.
So what features it can give:

Tracking route loading state - state.routing.route.isLoading
Tracking route params change - state.routing.route.params

What problems it can create:

Multiple dispatches of SUCCESS action - need to check for props changes before dispatching action
Didn't test it on isomorphic/universal apps - so it can create lot's of pain there (theoretically)

EDIT:
Here logs screenshot of initial loading

Async routes are really out of scope of this library. It's main function is for syncing up when using Dev Tools. But you should let Router manage its state in production.

Dan posted a good writeup on SO today on how you should keep app state and location/router state separate: http://stackoverflow.com/questions/36722584/how-to-sync-redux-state-and-url-hash-tag-params/36749963#36749963


calling DOM methods

If an element gets rendered by a choo view, and I need to invoke a method on that element in response to an action, what is the proper way for making that call?
For example scrollIntoView(), focus(), normalize(), select(), etc.
In React, I'd use lifecycle methods for this. Would it make sense to add similar hooks to choo?

Seems like Elm has a similar issue: https://github.com/evancz/elm-architecture-tutorial/issues/49.

Sounds like you probably want to do some finite state machinery around this; the onload and onunload hooks might be helpful here https://github.com/shama/bel#lifecycle-events

Thanks. Bel's hooks look useful for some use cases.
I'm thinking a generic view callback would cover all use cases. Would something like this be terrible:
const MyView(state, prev, send) => html`
  <div>
    ${tallThing1}
    ${tallThing2}
  </div>
`
MyView.domCallback = (state, prev, rootElement) => {
  // called every time after MyView has been called and morphed into the DOM
  // rootElement is the div in this example
  if (state.currentThing !== prev.currentThing) {
    rootElement.childNodes[state.currentThing].scrollIntoView();
  }
}

You could do that in a setTimeout(fn, 0) or process.nextTick(fn); DOM updates resolve synchronously, so it should be good

Oh, cool. The timeout callback doesn't give me the parentElement sugar but is good enough. Coming from React, I assumed DOM updates in Choo are also asynchronous.

Note that you'll have to use query selectors in timeouts because once the view is patched onto the dom, there's no guarantee the element created by the view will still exist. Because choo uses morphdom to apply dom updates, if an element already exists in the dom, it simply gets updated rather than replaced. So if your view creates a <div> each time it runs, and you save a reference to that <div> inside your view and refer to it in a setTimeout callback, it will only work on the first render. Because future renders simply patch the existing <div> with the one they created.


[Bug] [MGS1]: BUG excessive zoom in the intro and in the water (game v1.5.0 correction)

Issue Summary:
BUG excessive zoom in the intro and in the water.
I'm using the latest version 2.2 of the mod that fixes the game, but at the same time it's broken when using the "MGS1 only: Enables render resolve scaling" settings leaving the game with a huge Zoom in the intro and when you enter the water. Can anyone tell me if there will be a fix for this? Because this feature is the only one that leaves the game with playable graphics, because Konami did a terrible job in this port.
MGSHDFix & Game Version Numbers:
 Games - 1.5.1
MGSHDFix - 2.2

Log Files:

MGSM2Fix.log
Reproduction:
my settings below in the mod are like this. "MGSM2Fix.ini"
;;;;;;;;;; General ;;;;;;;;;;
[External Resolution]
; Enter your chosen resolution.
; You can leave these at 0 if you want your desktop resolution used instead.
Enabled = true
Width = 0
Height = 0
Windowed = false
Borderless = true
[Internal Resolution]
; MGS1 only: Enables render resolution scaling.
; Width is controlled using the in-game settings. Leave the height at 0 to use the external resolution.
Enabled = true
Height = 0
Widescreen = true

I think you meant to post this issue over on the MGSM2Fix repository.

No, I think you misunderstood me.

but in that case, will there be some kind of correction in the future?

but in that case, will there be some kind of correction in the future?

It's not my project, so I can't say. I've done no work on the M2 ports that are included in Vol. 1. You would be better off asking there.


Displayed tiles are incorrect when using TMS option on map

If map options include tms == true, then the calculation of the tile y value is incorrect, due to this plugin overriding _pxBoundsToTileRange.
_pxBoundsToTileRange is called in Leaflet's GridLayer.js, in function _resetGrid, to get the tile coordinates for the entire world.
If the edgeBufferTiles value is set to non-zero, then the max y value for the world is increased by 2.  Then, in Leaflet's TileLayer.js, in function getTileUrl, when variable invertedY is calculated, it uses the value of this._globalTileRange.max.y, which is too large by the value of edgeBufferTiles, so invertedY is too large.  If tms is set true, then this affects which tiles are displayed in the viewport, leading to the map appearing to be offset from the true position supposed to be displayed.

My original code overrode _getTiledPixelBounds, but was changed to _pxBoundsToTileRange to give a simpler implementation. In hindsight, the original is probably preferred as it only gets called in _update and not _resetGrid.
I've created a new branch with the original code tweaked to work with the latest leaflet code. Can you try it out and see if it works for your tms maps?
https://github.com/TolonUK/Leaflet.EdgeBuffer/blob/TmsCompatibility/src/leaflet.edgebuffer.js

Should now be fixed in v1.0.2.


[COM-160] notify slack when build goes back green

The build was failing, but then it wasn't obvious when it stopped failing

I understand the logic change, but why the change from currentResult to result? 🤔

for "consistency", since we are using result on the previousBuild object. In this case the two are equivalent because we are in the post block, so the result is guaranteed to be set.
basically currentResult is the "result so far", but here we are at the end of the build


Make possible to get the organization "name" from the Customization entity

It would be useful to have the result of the query to get directly the "name" column of the organization owning the application that is the origin of the customization:
I need the name of the service provider organization.

It would be useful from the WebUI point of view also.

Should be implemented check and close

What parameter this rest will receive? The customization ID? The application ID?

I think that the name of the organization should be inside the "customization" information.
https://github.com/CloudOpting/cloudopting-manager/issues/36

It is already possible to get the name of the application.
Endpoint GET /api/customization return JSON:
[
  {
    "customerOrganizationId": {
      "applicationss": [
        {
          "id": 0,
          "applicationMedias": [
            {
              "id": 0,
              "applicationId": "Applications",
              "mediaContent": [
                ""
              ]
            }
          ],
          "organizationId": "Organizations",
          "statusId": {
            "id": 0,
            "applicationss": [
              "Applications"
            ],
            "status": ""
          },
          "applicationName": "",
          "applicationToscaName": "",
          "applicationDescription": "",
          "applicationToscaTemplate": "",
          "applicationVersion": ""
        }
      ],
      "cloudAccountss": [
        {
          "id": 0,
          "organizationId": "Organizations",
          "customizationss": [
            "Customizations"
          ],
          "providerId": {
            "cloudAccountss": [
              "CloudAccounts"
            ],
            "provider": "",
            "id": 0
          },
          "name": "",
          "apiKey": "",
          "secretKey": "",
          "endpoint": ""
        }
      ],
      "customizationss": [
        "Customizations"
      ],
      "organizationType": {
        "id": 0,
        "organizationss": [
          "Organizations"
        ],
        "types": ""
      },
      "organizationCreation": "",
      "organizationActivation": "",
      "organizationDecommission": "",
      "organizationStatus": {
        "id": 0,
        "status": ""
      },
      "description": "",
      "organizationKey": "",
      "organizationName": "",
      "id": 0
    },
    "cloudAccount": {
      "id": 0,
      "organizationId": {
        "applicationss": [
          {
            "id": 0,
            "applicationMedias": [
              {
                "id": 0,
                "applicationId": "Applications",
                "mediaContent": [
                  ""
                ]
              }
            ],
            "organizationId": "Organizations",
            "statusId": {
              "id": 0,
              "applicationss": [
                "Applications"
              ],
              "status": ""
            },
            "applicationName": "",
            "applicationToscaName": "",
            "applicationDescription": "",
            "applicationToscaTemplate": "",
            "applicationVersion": ""
          }
        ],
        "cloudAccountss": [
          "CloudAccounts"
        ],
        "customizationss": [
          "Customizations"
        ],
        "organizationType": {
          "id": 0,
          "organizationss": [
            "Organizations"
          ],
          "types": ""
        },
        "organizationCreation": "",
        "organizationActivation": "",
        "organizationDecommission": "",
        "organizationStatus": {
          "id": 0,
          "status": ""
        },
        "description": "",
        "organizationKey": "",
        "organizationName": "",
        "id": 0
      },
      "customizationss": [
        "Customizations"
      ],
      "providerId": {
        "cloudAccountss": [
          "CloudAccounts"
        ],
        "provider": "",
        "id": 0
      },
      "name": "",
      "apiKey": "",
      "secretKey": "",
      "endpoint": ""
    },
    "applicationId": 0,
    "customizationToscaFile": "",
    "customizationCreation": "",
    "customizationActivation": "",
    "customizationDecommission": "",
    "statusId": 0,
    "processId": "",
    "id": 0
  }
]


Enable nullable reference types

Long list of commits, but perhaps that makes reviewing a bit easier, as the changes are somewhat scoped.

Nullable reference types are enabled for the library and the example project
All nullable warnings are errors in the library
I've managed to have no remaining islands of #nullable disable and the build succeeds and the example still runs.

There have been a few problematic places, though, that have been annotated with comments, and sometimes pointed out in the commit message. Most of those have been silenced for now with a somewhat minimal set of ! operators.
See #230.
TODO (F):

[x] after merge, create an issue about

ScriptsAtom.BaseAtom being (supposedly) non-nullable
make StyledAtom's constructor parameter atom non-nullable, add asserts
make TypedAtom.Atom non-nullable, add asserts
UnderlinedAtom.Atom
VerticalCenteredAtom.Atom
OverUnderBox.ScriptBox
PredefinedFormulaParser shouldn't return null? to fix predefinedFormula!.RootAtom! (TexFormulaParser.cs:648)
Radical.BaseAtom
remove TODO / fix the issue with RowAtom ctor RowAtom(SourceSpan? source, IEnumerable<Atom?> elements)
fix an issue with RowAtom(SourceSpan? source, Atom? baseAtom) (see the comment)

OK, I do see build failures on my end as well, but seemingly only for net452. The build seems to work for netcoreapp3.0, which results in the compiled assembly. Subsequent builds in VS (Ctrl+Shift+B) then tell me "Build successful", as the build system apparently thinks all artifacts are there.

Apparently this is the problem: https://github.com/manuelroemer/Nullable/issues/11

Well, thanks for giving me an opportunity to try such a migration. Still planning to do so at work, albeit on a larger, more confusing code base where the only benefit is that I know it fairly well :-)
And I fear the amount of left over todos is probably normal for old code.


Does hiredis-cluster support SSUBSCRIBE?

Neither synchronous nor asynchronous mode can handle SSUBSCRIBE.
Is there an example that handles SSUBSCRIBE?

Hi @arwace!
No, unfortunately hiredis-cluster does not support any kind of subscribe (SUBSCRIBE, PSUBSCRIBE, SSUBSCRIBE). See #27.
Regarding SSUBSCRIBE, not even the underlying hiredis supports it. See https://github.com/redis/hiredis/pull/1066.
redis-cli (which comes with redis) can support ssubscribe and it uses hiredis, but it does it's own handling. (It calls redisGetReply() repeatedly and checks if each reply looks like a pushed pubsub message.)

If you have a blocking thread to consume messages, one possible workaround is to use hiredis directly. You can get the hiredis context from hiredis-cluster like this:
redisClusterNode *node = redisClusterGetNodeByKey(cc, "channel");
redisContext *c = ctx_get_by_node(cc, node);

Then use hiredis functions with context c, for example to get all pubsub messages in a loop.
redisReply *reply = redisCommand(c, "SSUBSCRIBE channel");
freeReplyObject(reply);
while (redisGetReply(c, (void *)&reply) == REDIS_OK) {
    // consume message
    freeReplyObject(reply);
}


updated IAIS repository URL (http:// -> https://)

http://maven.iais.fraunhofer.de/ui/native/eis-ids-public isn't accessible anymore, but
https://maven.iais.fraunhofer.de/ui/native/eis-ids-public is accessible
addresses #678

wrong patch

Hi, I tried this solution but it doesn't work. Could it be possible that the problem is in some internal library or dependency in the POM?

Hi,
One of the errors was this:
#15 71.36 Caused by: org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact de.fraunhofer.iais.eis.infomodel:util:pom:4.2.7-SNAPSHOT from/to maven-default-http-blocker (http://<IP_ADDRESS>/): Blocked mirror fo
r repositories: [eis-public-repo (http://maven.iais.fraunhofer.de/artifactory/eis-ids-public, default, disabled), eis-snapshot-repo (http://maven.iais.fraunhofer.de/artifactory/eis-ids-snapshot, default, releases+snapshots), eis-ids-public (http://maven.iais.fraunhofer.de/artifactory/eis-ids-public, default, releases+snapshots)]
I opened the repository:
https://maven.iais.fraunhofer.de/ui/native/eis-ids-public/de/fraunhofer/iais/eis/ids/infomodel/validation-serialization-provider/4.2.7-SNAPSHOT/
We can see this POM is pointing to the old URL:

I think this problem can ocur in all the components that are using the old URL.

I guess the best solution would be to have a redirect from HTTP -> HTTPS in place at maven.iais.fraunhofer.de, right?

I don't know if a redirection will work. The problem is related with this issue:
https://maven.apache.org/docs/3.8.1/release-notes.html#cve-2021-26291
The solution that they give is to change the source of adding a mirror in POM settings:

I guess a redirect won't work because the blocking happens when Maven parses the URL.

ok, the problem therefore does not exist with Maven versions below 3.8.1, right? I got a successful build with Maven 3.6.3 on a VM that allowed me to install that rather old maven version. Of course one idea of using docker and the like is the idea to specify a particular version a software depends on to have some kind of reproducible builds. The problem with the Dockerfile in this case is that it does not specify a specific version of Maven to build the DataspaceConnector. (Another problem is of course that the software depends on artifacts that depend on artifacts that can't be found on the official Maven repository and therefore additionally depends on the availability of the additional maven repositories like the one of Fraunhofer IAIS).
One way to avoid modification of more dependencies (considered as 3rd party dependencies), which may not be possible in each case and may have additional side effects, is to explicitly specify a maven version in the Dockerfile. This is what I have done here:
https://github.com/International-Data-Spaces-Association/DataspaceConnector/commit/3e0517518419ab194a621ce2d338c59234942760

It worked for me too. I think this may be a temporary solution, but if the servers have changed to https, the urls need to be changed as well.


[feature request] make editor preserve signal connections when replacing a target node by an other

Hi,
I have a bunch of buttons that have their "pressed" signals connected to the script of the root-scene node.
If, into the Editor, I replace the scene-node by an other node type (for instance Node2D by Spatial node), then, all buttons signal connections are lost, and I have to reconnect them all manually.
It would be cool if signals connections were preserved when a node is replaced by an other into the Editor.

I noticed this too.
I wouldn't call this a feature request, it's a bug.

I agree that this would be a nice feature. And when the signal has no counterpart in the new node type, it should show a dialog to notify the user about the soon-to-be-lost connections. Right now I'm connecting my signals preferentially via GDScript due to this annoying behaviour when using the GUI.


Update Okta phishlet, bypass integrity check

Okta has subresource integrity checking on JavaScript files it loads. This will look for the sha384 integrity check and remove it cleanly. This allows the browser to render the JavaScript without errors.

Thanks @slyd0g . Great find!


Compiler doesn't find invalid expression

https://github.com/FredTheDino/PuckNet/blob/d11d6a1c27729b7eaf29eb0404bc9bcb415f46b5/game.sy#L318

This might be related to #305

This is solved in main. Closing.


TAR AssertionError - BequeathingDataAndDieCausesForwardings - Expected ExecutionAndTraceLog/v1/list-records-of-flow for /v1/bequeath-your-data-and-die

In TAR software upgrade getting AssertionErrors

The forwarding for 'bequeathYourDataAndDie' is successful.
expected false to be true
As expected, 8 requests could be found for /v1/document-approval-status successful
expected 7 to equal 8
As expected, the forwarding 'PromptForBequeathingDataCausesRequestForBroadcastingInfoAboutServerReplacement' is not successful
expected true to equal false

Assertion failure details

The forwarding for 'bequeathYourDataAndDie' is successful.
expected false to be true
As expected, 8 requests could be found for /v1/document-approval-status successful
expected 7 to equal 8
As expected, the forwarding 'PromptForBequeathingDataCausesRequestForBroadcastingInfoAboutServerReplacement' is not successful
expected true to equal false


chore: doc drain & kill timeouts

Changes

#646  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @NathanFlurry and the rest of your teammates on  Graphite


SelectMany that merges async streams projected from a sequence

This PR is an implementation of SelectMany that projects asynchronous stream from each element of a source sequence and merges the elements of the projected asynchronous stream into a single asynchronous stream result.
By default, the projected asynchronous streams are consumed concurrently. Additional options permit setting maximum desired concurrency.
Demo
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using MoreLinq.Experimental.Async;

var q =
    from x in Enumerable.Range(1, 5)
    from e in AsyncEnumerable.Range(x, 5)
                             .Zip(Interval(TimeSpan.FromSeconds(0.2)), (y, _) => (Y: y, Time: DateTime.Now))
    select new { X = x, e.Y, e.Time };

var qq = args.Length > 0
       ? q.MaxConcurrency(int.Parse(args[0]))
       : q;

await foreach (var e in qq)
    Console.WriteLine($"{e.Time:HH:mm:ss.fff}: x = {e.X}, y = {e.Y}");

static async IAsyncEnumerable<int> Interval(TimeSpan interval)
{
    for (var i = 0; ; i++)
    {
        await Task.Delay(interval).ConfigureAwait(false);
        yield return i;
    }
}

The SelectMany approach proposed here has too many dimensions to consider for now. A (seemingly) simpler version, Merge, that I'd like to start with is being worked on in PR #793 and supersedes this.

The SelectMany approach proposed here has too many dimensions to consider for now. A (seemingly) simpler version, Merge, that I'd like to start with is being worked on in PR #793 and supersedes this.


[DOC] Migration from Testnet to Mainnet walkthrough

Our users requested a clear resource on contract migration from NEAR testnet to NEAR mainnet.

we have now explanations on how to create accounts and deploy contracts that work in both mainnet and Testnet. Furthermore, we explain how to switch between them.


Slow rendering

I'm using this for rendering my blog but
It's taking now almost 8sec to load the entire page:
https://goo.gl/nRtSmH
I might be doing something wrong in my configurations or
it just what it is expected from using SVG Rendering?

I've run the Webpagetest for your site: https://www.webpagetest.org/result/180424_VH_9a8dd0931470805f2a6293e8b6ac05c8/1/details/#waterfall_view_step1
Here is the network waterfall:
I think it would be hard to optimize loading of SVG files itself (from ~3 to ~4.4 seconds). I consider it's normal for large number of images. But you can optimize the connection and download time of tex.s2cms.ru/latex.js (now it takes 1.057 seconds). I use the following markup:
<head>
    <link rel="preconnect" href="//fonts.gstatic.com">
    <link rel="preload" href="//tex.s2cms.ru/latex.js" as="script">
    ...
</head>

You can optimize loading content from other domains like avatars3.githubusercontent.com, fonts.googleapis.com and so on. Add them step by step and check if it reduces the page load time.

Maybe I might be doing something wrong but It doesn't work.
I add in the head part:
 <link rel="preload" href="//tex.s2cms.ru/latex.js" as="script">

In the footer I still have:
<script src="//tex.s2cms.ru/latex.js"></script>

But it doesn't improve or I can't notice it.
If I removed the last one, nothing renders.

Maybe you don't notice the difference because of browser cache. I'd recommend to use https://www.webpagetest.org/ to measure the delay. Here is, for example, my website loading timeline:

As you can see, due to <link rel="preload" ...> loading of tex.s2cms.ru/latex.js starts earlier than google-analytics and fonts.gstatic.com. This is not the case for your webpage.

Ok. It's now like yours I think so.


Chem | Activity Cliffs: slider on scatter plot overlaps categories for color coding

Platform: public "Version": "1.10.2"
Dev "Version": "1.10.3"
Data: approveddrugs2015
To reproduce:

Go to Chem > Activity Cliffs

Actual: the Show only cliffs slider on the scatter plot overlaps categories for color coding.
Expected: UI elements don't overlap each other.

The legend should not appear in activity cliffs viewer. This was caused by incorrect type of column selected for Activity (only numeric columns should be used). Will implement check for input column type.

For this dataset the 'molecule' column was selected for Actitvity cliffs. No legend was added manually

Can't reproduce


Add version: MonkeysAudio.MonkeysAudio version 1.033

Pull request has been created with WinGet Automation :rocket:
Microsoft Reviewers: Open in CodeFlow

@wingetbot run


Set default field type when field type is missing

fixes #1512

Please make sure that all the checks pass. Please add here any additional information regarding this pull request. It's highly recommended that you link this PR to an issue (please create one if it doesn't exist for this PR)

@roll it is ready for review.


toha/exampleSite/data/cn/sections/projects.yaml bug

Expected Behavior

weight:5
Current Behavior

\data\cn\sections\projects.yaml:7:1": failed to unmarshal YAML: yaml: line 7: could not find expected ':'
Possible Solution

weight: 5,need space.
Steps to Reproduce

Screenshots

Browsers Affected

[ ] Chrome
[ ] Firefox
[ ] Edge
[ ] Safari 11
[ ] Safari 10
[ ] IE 11

Detailed Description

Thanks for reporting. Should be fixed by #215

Thanks for reporting. Should be fixed by #215


Linked container is not recreated when another linked container is recreated

There seems to be a dependency problem with a Fig configuration that has one shared database container and two application containers using it. When one of the application containers is recreated (with fig up -d), Fig also recreates the shared database container, but it does not recreate the other application container. This causes the Docker link to go stale, and the non-recreated application no longer works.
I think that when Fig recreates a container, it should also recreate all the containers that are linked to it. Otherwise they stop working.

OK, so if I understand it right, the problem is that if we have this fig.yml:
db:
  ...

appA:
  links: ["db"]

appB:
  links: ["db"]

and I type fig up -d appA while everything's running, then db and appA will be recreated, but appB won't. In which case, yep, that's a bug.
Long-term, the solution I'd prefer is for Fig to determine that we don't need to recreate db - because no configuration has changed - and only recreate appA.
Still, fig up -d db will still need to recreate appA and appB. So fig up should probably recreate downstream containers.
(fig up --no-recreate doesn't need to do this, though. Just thinking out loud.)

@aanand Yes, that's exactly the problem. My workaround is to manually recreate all the linked containers as "fig up -d appA appB" but it's easy to accidentally forget some of them, as every deployment script would need to know about all the linked apps.

This should be fixed in 1.4.0.  The default (with no services specified) will recreate the containers that have changed and any containers that depend on them.


Trying to assign org quota but have no authorization

Please fill out the issue checklist below and provide ALL the requested information.

[ yes] I reviewed open and closed github issues that may be related to my problem.
[yes ] I tried updating to the latest version of the CF CLI to see if it fixed my problem.
[yes ] I attempted to run the command with CF_TRACE=1 to help debug the issue.
[yes ] I am reporting a bug that others will be able to reproduce.

Describe the bug and the command you saw an issue with
I want to push an app to the Siemens Insight Hub, however, it shows that the organization's memory limit has exceeded, after several checking, I found out this is due to the org quota limit, so I am trying to assign a new org quota to my organization, but failed with the following error:
%cf update-org-quota cf-quota-1572872376330 -n cf-quota-1572872376330 -m 10G -i 2048M -l 8K -r 20 -s 20 --allow-paid-service-plans
Updating org quota cf-quota-1572872376330 as<EMAIL_ADDRESS>You are not authorized to perform the requested action.
What happened
<EMAIL_ADDRESS>is already an ORG Manager, Space Manager, and Space Developer. I have tried to create an admin user and assign it to the scope cloud_controller. However, even if the process is successful, the admin has not been added to the scope cloud_controller. I wonder if this is the reason.  Here is the code:
%uaac member add cloud_controller.admin admin
success
% uaac context
[0]*[http://localhost:8080/uaa]
[0]*[admin]
client_id: admin
access_token: [i hided]
token_type: bearer
expires_in: 43199
scope: clients.read clients.secret clients.write uaa.admin clients.admin scim.write scim.read
jti: bf9c3af89dbd4d3387804c09d4982191
Expected behavior
I want to assign a new org quota to my organization but have no authorization.
Provide more context

platform and shell details: MAC OS 13.4.1 (22F82)
version of the CLI you are running: cf version 8.7.1+9c81242.2023-06-15

Thank you

Can you please specify which behavior in the CF CLI is malfunctioning and how it needs to be changed?


Update swift:main to support llvm-project:stable/20210726 changes (Rebranch merge)

@swift-ci clean test Linux

Build failed
Swift Test OS X Platform
Git Sha - 79375b7047ab32c29c9d300f5bcab7fe09c27b13

02:40:14 Failed Tests (1):
02:40:14   lldb-shell :: SwiftREPL/FoundationTypes.test

Cc: @JDevlieghere

@swift-ci test Amazon Linux 2

@swift-ci test centos 8

@swift-ci test Ubuntu 20.04

After multiple runs we are still seeing this test failure.

Failed Tests (1):
  Swift(windows-x86_64) :: Interop/Cxx/class/protocol-conformance-typechecker.swift

cc: @zoecarver any suggestions on whats going on?

Build failed
Swift Test Amazon Linux 2 Platform
Git Sha - 79375b7047ab32c29c9d300f5bcab7fe09c27b13

Build failed
Swift Test CentOS 8 Platform
Git Sha - 79375b7047ab32c29c9d300f5bcab7fe09c27b13

Build failed
Swift Test Ubuntu 20.04 Platform
Git Sha - 79375b7047ab32c29c9d300f5bcab7fe09c27b13

Build failed
Swift Test Linux Platform
Git Sha - 79375b7047ab32c29c9d300f5bcab7fe09c27b13

Build failed
Swift Test Ubuntu 20.04 Platform
Git Sha - 79375b7047ab32c29c9d300f5bcab7fe09c27b13

@swift-ci test Ubuntu 20.04

Build failed
Swift Test Ubuntu 20.04 Platform
Git Sha - 79375b7047ab32c29c9d300f5bcab7fe09c27b13

After multiple runs we are still seeing this test failure.

Failed Tests (1):
  Swift(windows-x86_64) :: Interop/Cxx/class/protocol-conformance-typechecker.swift

cc: @zoecarver any suggestions on whats going on?

It looks like last time it was access-specifiers-typechecker.swift and now it's protocol-conformance-typechecker.swift. Several people have reported this same issue recently across many PRs. I've also been seeing it myself. It seems like there's some race condition when loading modules on Windows... maybe in these small tests we don't wait for clang to load something? @compnerd any ideas?
Until we sort this out, I think your best bet is re-running the CI any time you see the error: could not build C module on Windows.

@zoecarver

Until we sort this out, I think your best bet is re-running the CI any time you see the error: could not build C module on Windows.
Unfortunately this is costly, can we disable these tests if they are flaky?

Unfortunately this is costly, can we disable these tests if they are flaky?

I agree. This is really not ideal. But it seems like almost all the module-interface and typechecker tests are susceptible.
Luckily it seems like the Windows bots have a lot of power, but still, not ideal.

Also CC @bnbarham. Any chance a recent swift driver change added a race condition when loading clang modules?

@shahmishal I haven't been able to identify the change, but this is definitely something that is part of the rebranch.  There was flakiness before, but nothing at this scale.  There is most definitely a race condition that is now getting exposed.  On the local builds, I've seen a number of failures with the rebuild of the modules (which points to 766a08df12c111b15ed51d0fcac06042d2f68cd6).  Reverting that change locally seems to have a drastic improvement on the stability.

cc @bnbarham -- https://reviews.llvm.org/D105328
Any thoughts on why we are seeing this on Windows?

cc @bnbarham -- https://reviews.llvm.org/D105328
Any thoughts on why we are seeing this on Windows?

Very strange. That PR changes what would (or could, technically) be a crash into a compiler error. It's invalid to return OutOfDate for a module that's already been finalized. I'm not sure why it would be worse on Windows either. Any ideas @vsapsai?

@swift-ci clean test

Build failed
Swift Test Linux Platform
Git Sha - 79375b7047ab32c29c9d300f5bcab7fe09c27b13

We will need https://github.com/apple/swift/pull/39498 to get past the SILOptimizer/mem2reg_lifetime.sil failure.
The Linux failure was due to a missing template parameter to the SmallVector.

@swift-ci clean test

@swift-ci test Ubuntu 20.04

Build failed
Swift Test Ubuntu 20.04 Platform
Git Sha - 79375b7047ab32c29c9d300f5bcab7fe09c27b13

Ubuntu 20.04 failure: Error: No such container: swift-pr-ubuntu-2004

20:26:09 Step 3/6 : ENV DEBIAN_FRONTEND="noninteractive"
20:26:09  ---> [Warning] IPv4 forwarding is disabled. Networking will not work.
20:26:10  ---> Running in 14c13bdffe6c
20:26:10 Removing intermediate container 14c13bdffe6c
20:26:10  ---> 882ad48dda20
20:26:10 Step 4/6 : RUN apt-get -y update && apt-get -y install   build-essential         clang                   cmake                   git                     icu-devtools            libcurl4-openssl-dev    libedit-dev             libicu-dev              libncurses5-dev         libpython3-dev          libsqlite3-dev          libxml2-dev             ninja-build             pkg-config              python                  python-six              python2-dev             python3-six             python3-distutils       rsync                   swig                    systemtap-sdt-dev       tzdata                  unzip                   uuid-dev
20:26:10  ---> [Warning] IPv4 forwarding is disabled.  They have been ignored, or old ones used instead.
20:27:11 Reading package lists...
20:27:11 Building dependency tree...
20:27:11 Reading state information...
20:27:11 E: Unable to locate package build-essential
20:27:11 E: Unable to locate package clang
20:27:11 E: Unable to locate package cmake
20:27:11 E: Unable to locate package git
20:27:11 E: Unable to locate package icu-devtools
20:27:11 E: Unable to locate package libcurl4-openssl-dev
20:27:11 E: Unable to locate package libedit-dev
20:27:11 E: Unable to locate package libicu-dev
20:27:11 E: Unable to locate package libncurses5-dev
20:27:11 E: Unable to locate package libpython3-dev
20:27:11 E: Unable to locate package libsqlite3-dev
20:27:11 E: Unable to locate package libxml2-dev
20:27:11 E: Unable to locate package ninja-build
20:27:11 E: Unable to locate package pkg-config
20:27:11 E: Unable to locate package python
20:27:11 E: Unable to locate package python-six
20:27:11 E: Unable to locate package python2-dev
20:27:11 E: Unable to locate package python3-six
20:27:11 E: Unable to locate package python3-distutils
20:27:11 E: Unable to locate package rsync
20:27:11 E: Unable to locate package swig
20:27:11 E: Unable to locate package systemtap-sdt-dev
20:27:11 E: Unable to locate package tzdata
20:27:11 E: Unable to locate package unzip
20:27:11 E: Unable to locate package uuid-dev
20:27:11 The command '/bin/sh -c apt-get -y update && apt-get -y install   build-essential         clang                   cmake                   git                     icu-devtools            libcurl4-openssl-dev    libedit-dev             libicu-dev              libncurses5-dev         libpython3-dev          libsqlite3-dev          libxml2-dev             ninja-build             pkg-config              python                  python-six              python2-dev             python3-six             python3-distutils       rsync                   swig                    systemtap-sdt-dev       tzdata                  unzip                   uuid-dev' returned a non-zero code: 100

@swift-ci clean test

More interop failures on Windows:
  Swift(windows-x86_64) :: Interop/C/implementation-only-imports/check-function-transitive-visibility.swift
  Swift(windows-x86_64) :: Interop/C/implementation-only-imports/check-function-visibility.swift

Build failed
Swift Test Linux Platform
Git Sha - 3f18865559abae682c6cb841b02a611dcefeb3dc

Linux failure:
/home/buildnode/jenkins/workspace/swift-PR-Linux@2/branch-main/swift/lib/SILOptimizer/Transforms/SILMem2Reg.cpp:405:3: error: too few template arguments for class template 'SmallVector'
22:03:34   SmallVector<DeallocStackInst *> dsis;
22:03:34   ^
22:03:34 /home/buildnode/jenkins/workspace/swift-PR-Linux@2/branch-main/swift/include/swift/Basic/LLVM.h:47:43: note: template is declared here
22:03:34   template <typename T, unsigned N> class SmallVector;
22:03:34   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       ^
22:03:34 /home/buildnode/jenkins/workspace/swift-PR-Linux@2/branch-main/swift/lib/SILOptimizer/Transforms/SILMem2Reg.cpp:409:3: error: too few template arguments for class template 'SmallVector'
22:03:34   SmallVector<SILBasicBlock *> lexicalBBIBlocks;
22:03:34   ^
22:03:34 /home/buildnode/jenkins/workspace/swift-PR-Linux@2/branch-main/swift/include/swift/Basic/LLVM.h:47:43: note: template is declared here
22:03:34   template <typename T, unsigned N> class SmallVector;
22:03:34   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       ^
22:03:34 /home/buildnode/jenkins/workspace/swift-PR-Linux@2/branch-main/swift/lib/SILOptimizer/Transforms/SILMem2Reg.cpp:795:3: error: too few template arguments for class template 'SmallVector'
22:03:34   SmallVector<SILValue> vals;
22:03:34   ^
22:03:34 /home/buildnode/jenkins/workspace/swift-PR-Linux@2/branch-main/swift/include/swift/Basic/LLVM.h:47:43: note: template is declared here
22:03:34   template <typename T, unsigned N> class SmallVector;
22:03:34   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       ^
22:03:34 /home/buildnode/jenkins/workspace/swift-PR-Linux@2/branch-main/swift/lib/SILOptimizer/Transforms/SILMem2Reg.cpp:405:35: warning: private field 'dsis' is not used [-Wunused-private-field]
22:03:34   SmallVector<DeallocStackInst *> dsis;
22:03:34                                   ^
22:03:34 /home/buildnode/jenkins/workspace/swift-PR-Linux@2/branch-main/swift/lib/SILOptimizer/Transforms/SILMem2Reg.cpp:409:32: warning: private field 'lexicalBBIBlocks' is not used [-Wunused-private-field]
22:03:34   SmallVector<SILBasicBlock *> lexicalBBIBlocks;
22:03:34                                ^

This PR should fix the issue on Linux: https://github.com/apple/swift/pull/39501

Build failed
Swift Test OS X Platform
Git Sha - 3f18865559abae682c6cb841b02a611dcefeb3dc

@swift-ci please test Linux platform

Build failed
Swift Test Linux Platform
Git Sha - 3f18865559abae682c6cb841b02a611dcefeb3dc

@swift-ci clean test macOS

@swift-ci test Ubuntu 20.04

Please test with the following pull request:
https://github.com/apple/llvm-project/pull/3309
@swift-ci please test Windows platform

Build failed
Swift Test Ubuntu 20.04 Platform
Git Sha - 3f18865559abae682c6cb841b02a611dcefeb3dc

Build failed
Swift Test OS X Platform
Git Sha - 3f18865559abae682c6cb841b02a611dcefeb3dc

@swift-ci test Amazon Linux 2

@swift-ci test CentOS 8

Build failed
Swift Test Amazon Linux 2 Platform
Git Sha - 3f18865559abae682c6cb841b02a611dcefeb3dc

Build failed
Swift Test CentOS 8 Platform
Git Sha - 3f18865559abae682c6cb841b02a611dcefeb3dc

Please test with the following pull request:
apple/llvm-project#3333
@swift-ci please test Windows platform

Please test with the following pull request:
apple/llvm-project#3333
@swift-ci please test Windows platform

Please test with the following pull request:
apple/llvm-project#3334
@swift-ci please test Windows platform

@swift-ci please test macOS platform

@swift-ci test CentOS 8

@swift-ci test Amazon Linux 2

@swift-ci test Ubuntu 20.04

@swift-ci build toolchain

I'm still banging my head against the Glibc.pthread_mutex_t resolution issue, so I expect that the Linux builds will still fail.

Yeah, I wanted to make sure that the macOS builds are also good to go at this point.  Trying to ascertain where exactly we stand wrt the rebranch.

Build failed
Swift Test Amazon Linux 2 Platform
Git Sha - c51550f30e2573ca3db1b5b275727ae47291be53

Build failed
Swift Test OS X Platform
Git Sha - c51550f30e2573ca3db1b5b275727ae47291be53

Build failed
Swift Test Ubuntu 20.04 Platform
Git Sha - c51550f30e2573ca3db1b5b275727ae47291be53

Build failed
Swift Test CentOS 8 Platform
Git Sha - c51550f30e2573ca3db1b5b275727ae47291be53

macOS Toolchain
Download Toolchain
Git Sha - c51550f30e2573ca3db1b5b275727ae47291be53
Install command
tar -zxf  swift-PR-39473-1150-osx.tar.gz --directory ~/

Build failed
Swift Test Linux Platform
Git Sha - 3f8fea8508d39b8121f8f8ff1a1046e462c6ba43

Build failed
Swift Test Amazon Linux 2 Platform
Git Sha - 3f8fea8508d39b8121f8f8ff1a1046e462c6ba43

Please test with the following PR:
https://github.com/apple/llvm-project/pull/3369
@swift-ci please test Linux platform

@swift-ci please test

@swift-ci test Amazon Linux 2

@swift-ci please test Windows platform

Centos failure:
20:07:24 Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Delete http://%2Fvar%2Frun%2Fdocker.sock/v1.24/volumes/swift-pr-centos-8?force=1: dial unix /var/run/docker.sock: connect: permission denied

Build failed
Swift Test Linux Platform
Git Sha - adf8ba3639db5bd702f27f5eb5a63fc56e154317

Linux failure:
The following tests FAILED:
	1602 - TestFoundation.TestNSAttributedString-test_enumerateAttributes (Failed)
	1623 - TestFoundation.TestNSMutableAttributedString-test_reverse_attribute_enumeration_with_extend_attributed_replace (Failed)
	1624 - TestFoundation.TestNSMutableAttributedString-test_direct_attributes_enumeration_with_extend_attributed_replace (Failed)
	1625 - TestFoundation.TestNSMutableAttributedString-test_reverse_attributes_enumeration_with_extend_attributed_replace (Failed)
	1628 - TestFoundation.TestNSMutableAttributedString-test_direct_attributes_enumeration_with_reduct_attributed_replace (Failed)
	1629 - TestFoundation.TestNSMutableAttributedString-test_reverse_attributes_enumeration_with_reduct_attributed_replace (Failed)
	1630 - TestFoundation.TestNSMutableAttributedString-test_direct_attribute_enumeration_with_extend_replace (Failed)
	1631 - TestFoundation.TestNSMutableAttributedString-test_reverse_attribute_enumeration_with_extend_replace (Failed)
	1632 - TestFoundation.TestNSMutableAttributedString-test_direct_attributes_enumeration_with_extend_replace (Failed)
	1633 - TestFoundation.TestNSMutableAttributedString-test_reverse_attributes_enumeration_with_extend_replace (Failed)
	1634 - TestFoundation.TestNSMutableAttributedString-test_direct_attribute_enumeration_with_reduct_replace (Failed)
	1635 - TestFoundation.TestNSMutableAttributedString-test_reverse_attribute_enumeration_with_reduct_replace (Failed)
	1636 - TestFoundation.TestNSMutableAttributedString-test_direct_attributes_enumeration_with_reduct_replace (Failed)
	1637 - TestFoundation.TestNSMutableAttributedString-test_reverse_attributes_enumeration_with_reduct_replace (Failed)
	1845 - TestFoundation.TestAttributedString-testConversionFromObjC (ILLEGAL)
	1848 - TestFoundation.TestAttributedString-testIncompleteConversionFromObjC (ILLEGAL)
	1850 - TestFoundation.TestAttributedString-testConversionNestedScope (ILLEGAL)
	1855 - TestFoundation.TestAttributedString-testConversionCoalescing (ILLEGAL)

@swift-ci please test Linux platform

Build failed
Swift Test Ubuntu 20.04 Platform
Git Sha - adf8ba3639db5bd702f27f5eb5a63fc56e154317

@swift-ci please test Windows platform

@swift-ci please test Ubuntu 20.04 Platform

Build failed
Swift Test Ubuntu 20.04 Platform
Git Sha - adf8ba3639db5bd702f27f5eb5a63fc56e154317

@swift-ci please build linux toolchain

@swift-ci please build linux toolchain

@swift-ci Please Build Toolchain Linux Platform

Linux Toolchain (Ubuntu 16.04)
Download Toolchain
Git Sha - adf8ba3639db5bd702f27f5eb5a63fc56e154317
Install command
tar zxf  swift-PR-39473-701-ubuntu16.04.tar.gz
More info

Please test with the following PRs:
apple/swift-corelibs-foundation#3086
@swift-ci please test CentOS 8 Platform

Please test with the following PRs:
apple/swift-corelibs-foundation#3086
@swift-ci please test test Ubuntu 20.04 Platform

apple/swift-corelibs-foundation#3086
@swift-ci please test test Ubuntu 20.04


Added Azure.VNET.BastionSubnet

PR Summary
Fixes #1761
Added Azure.VNET.BastionSubnet rule.
PR Checklist

[x] PR has a meaningful title
[x] Summarized changes
[ ] Change is not breaking
[ ] This PR is ready to merge and is not Work in Progress
Rule changes

[x] Unit tests created/ updated
[x] Rule documentation created/ updated
[x] Link to a filed issue
[ ] Change log has been updated with change under unreleased section

Other code changes

[ ] Unit tests created/ updated
[ ] Link to a filed issue
[ ] Change log has been updated with change under unreleased section

@BernieWhite
Do you mind taking a look and give some feedback?

@BernieWhite
I have not invested too much time into troubleshooting, but I am struggling with getting test results with outcome Pass after changing the rule a bit after code review. Those who for certain should be Pass are treated as Fail.
Are you aware what might be causing the problem?
$Assert.In($subnets, '.', @('AzureBastionSubnet')) should be valid based on assertion methods documentation.
$TargetObject.Properties.subnets | ForEach-Object { $_.name }
GetSubResources -ResourceType 'Microsoft.Network/virtualNetworks/subnets' | ForEach-Object { $_.name }

@BernieWhite
I have not invested too much time into troubleshooting, but I am struggling with getting test results with outcome Pass after changing the rule a bit after code review. Those who for certain should be Pass are treated as Fail.
Are you aware what might be causing the problem?
$Assert.In($subnets, '.', @('AzureBastionSubnet')) should be valid based on assertion methods documentation.
$TargetObject.Properties.subnets | ForEach-Object { $_.name } GetSubResources -ResourceType 'Microsoft.Network/virtualNetworks/subnets' | ForEach-Object { $_.name }

It seems to be a bug with the In assertion method. Logged microsoft/PSRule#1314

@BernieWhite
I have not invested too much time into troubleshooting, but I am struggling with getting test results with outcome Pass after changing the rule a bit after code review. Those who for certain should be Pass are treated as Fail.
Are you aware what might be causing the problem?
$Assert.In($subnets, '.', @('AzureBastionSubnet')) should be valid based on assertion methods documentation.
$TargetObject.Properties.subnets | ForEach-Object { $_.name } GetSubResources -ResourceType 'Microsoft.Network/virtualNetworks/subnets' | ForEach-Object { $_.name }

It seems to be a bug with the In assertion method. Logged microsoft/PSRule#1314

Great, I've spent some time and I'm able to make it work without using the assertion method, so this seems to be correct.
I'll wait with completing the rule until we fix In assertion method, but would be truly grateful if we could get it prioritized so I can finish this rule and jump to the next new rule.

Fixed in microsoft/PSRule#1314 which will be released in PSRule v2.5.1.

@BernieWhite
Ready for merge, check my latest changes to ensure that we are alligned.


Serialization testing - symmetric assertions to the unit tests

Current unit tests for the serialization library separates serialization and deserialization of the same struct into separate tests. These could go into one test.
Relevant discussions:
yihuang: symmetric testing
liamsi: function from Romain
tarcieri: proptest
Another take from Ismail

Note from Rust developers: https://github.com/serde-rs/serde/issues/1690#issuecomment-563031432

Be aware that neither serde nor serde_json makes round trip guarantees in general.

I think for some types not having the possibility to read what we wrote can cause problems (less problematic are edge cases like null or omitted fields we get from tendermint go). I think @yihuang and maybe @romac stumbled upon this (I think sth. we persisted by serialzing in the context if the light client couldn't properly be deserialized again). Roundtripping prevents bugs like this.

we need to guarantee that we can go from T->JSON->T (and that both Ts match)
I'm highlighting this as the core summary of the issues.

The opened PR fixes this in the serialization unit tests that originally spawned the issue. I'm sure there are a lot of other places to make fixes but that should require a different issue (more like a porject) with an overarching goal. This is more in line with fixing the comments that fell out of previous PRs.
Also, I'm trying to close open PRs and #98 from @yihuang seemed a good fit for this issue too. Hence his changes were reimplemented here (too many changes on master for a simple cherry-picking, unfortunately).
@yihuang , thanks for your patience regarding your change and feel free to chime in on this one, if you feel like it.

Additional note: proptest, mentioned by Tony seems more in line with a "project-like" issue where we overhaul how we're doing tests. It seemed overkill for this small fix, but I'm happy to open a follow-up issue that goes through our testing and implements better ways for testing.
I just don't see it as priority right now.