PhaseTracker vs BlockVolumeWorker - Requesting improvements

I am currently running

SpongeForge version: stable-7 exact commit
Java version: 1.8.0_231
Operating System: Win 10

I am trying to move around 60,000 blocks including their tile entities and having to use BlockSnapshot and it's method restore(), this accounts for 52% of my block moving code's runtime. Most of which are calls to the PhaseTracker.
People have suggested using a BlockWorker, however, they do not handle the tile entities and I cannot find a way to move them separately.
Would it be possible to optimise the PhaseTracker or implement a TileEntityVolumeWorker with the ability to place BlockStates and TileEntity at the same time?

There is little to nothing to go on to substantiate your claims and therefore allow us to try to understand your performance problems. Please put more effort into telling us as much as possible.

SpongeForge version: stable-7

That's not a version. We need to know what version you're using at this moment. stable-7 changes over time.

Java version: 8

I don't think this is going to matter, but run java --version and tell us what you're running. 8 is a large target.

I am trying to move around 60,000 blocks ...

In a tick? Presuming you have the whole tick to play with, so 50ms, each block is given about 800ns to process. That's ignoring all other processes. So, you're probably looking at 500ns per block + tile entity. Is that viable? Possibly, if you had nothing else on the server. Throw mods in and you've got no chance. So, there is some merit in asking yourself whether you can seriously split some of the process up over multiple ticks. I think you said in Discord that it's taking about 150ms already.
I have to say that what you're asking for is erring on unrealistic in the way that it is currently being done. Lots of processing, lots of data so I suspect there will be a lot of swapping in and out of CPU caches. I suspect some of it is down to not being able to bulk change blocks/tile entities (I understand why) and so a lot of processing is likely happening individually.
Be that as it may...

...including their tile entities and having to use BlockSnapshot and it's method restore(), this accounts for 52% of my block moving code's runtime.

So... what are you running? Plugins, mods? Processor specs? RAM? Every piece of information counts here. 52% to you might not be 52% on my machine, depending on what I have running.
Further, how did you measure this? Have you got a copy of the profiler dump you could share? Is the other 48% your code, or is there something else we might need to look at?

Most of which is calls to the PhaseTracker.

Is most of the time in those calls, of in sub calls that take it back out of the tracker? Is there an event which is being called which is slowing it down measurably? Is it calls to restore the block in the world?
I doubt it's the tracker itself.

Would it be possible to optimise the PhaseTracker

@gabizou already puts an insane amount of time into optimising the tracker. I should know as I've tried to sanity check it.

or implement a TileEntityVolumeWorker with the ability to place BlockStates and TileEntity at the same time?

Can you create and restore a Snapshot in a different place?

There is little to nothing to go on to substantiate your claims and therefore allow us to try to understand your performance problems. Please put more effort into telling us as much as possible.

Versions updated to be more exact.

I am trying to move around 60,000 blocks ...

In a tick? Presuming you have the whole tick to play with, so 50ms, each block is given about 800ns to process. That's ignoring all other processes. So, you're probably looking at 500ns per block + tile entity. Is that viable? Possibly, if you had nothing else on the server. Throw mods in and you've got no chance. So, there is some merit in asking yourself whether you can seriously split some of the process up over multiple ticks. I think you said in Discord that it's taking about 150ms already.

Yep, in a single tick. Ticks can be allowed to run over, it is expected. However, I have seen this sort of performance with the Bukkit version of my plugin.

I have to say that what you're asking for is erring on unrealistic in the way that it is currently being done. Lots of processing, lots of data so I suspect there will be a lot of swapping in and out of CPU caches. I suspect some of it is down to not being able to bulk change blocks/tile entities (I understand why) and so a lot of processing is likely happening individually.
Be that as it may...

...including their tile entities and having to use BlockSnapshot and it's method restore(), this accounts for 52% of my block moving code's runtime.

So... what are you running? Plugins, mods? Processor specs? RAM? Every piece of information counts here. 52% to you might not be 52% on my machine, depending on what I have running.

Stable-7 decompWorkspace with the in-dev version of my plugin.
CPU:  Ryzen 7 2700X @ 4.2Ghz
RAM: 16GB @ 3400Mhz
What else would help? I'm still new to this.

Further, how did you measure this? Have you got a copy of the profiler dump you could share? Is the other 48% your code, or is there something else we might need to look at?

I've never used a profiler before so it was guesswork to understand as much as I did.
JProfiler via IntelliJ plugin. I found my method call and saw how bad it was and then looked at how much was caused by calls it made. The BlockSnapshot#restore() calls took up 52%. The three calls to the PhaseTracker within that took about 20% each.
I would have to run it again to get a dump I think?

Most of which is calls to the PhaseTracker.

Is most of the time in those calls, or in sub calls that take it back out of the tracker? Is there an event which is being called which is slowing it down measurably? Is it calls to restore the block in the world?
I doubt it's the tracker itself.

Guess I'll need to run it again. I can discuss live results via a Discord call if it helps.

Would it be possible to optimise the PhaseTracker

@gabizou already puts an insane amount of time into optimising the tracker. I should know as I've tried to sanity check it.

I know, Gabizou is amazing. ❤

or implement a TileEntityVolumeWorker with the ability to place BlockStates and TileEntity at the same time?

Can you create and restore a Schematic in a different place?

Is there somewhere that explains how to do this?

Instead of screenshots, could you send the full profiling file? Otherwise, here's a very descriptive explanation of thoughts on your findings.

Screenshot showing 842,414 SpongeBlockSnapshot.restore() called taking 39,470ms total

You do realize this is the root of your problem, as we've said before in discord, it'd be far more efficient to make Schematics (pro tip: you only have to update the schematic if the aircraft is being damaged) and "place" those by moving them. Restoring snapshots individually is expensive because of the number of times you're doing it.

Screenshot showing practically useless information of PhaseContext.close(), PhaseTracker.setBlockState(), PhaseTracker.buildAndSwitch(), and WorldServer.removeTileEntity all being called 937,994 times (minus a few for some cases)

This is why restoring snapshots is cheap for small counts, but you're effectively wasting a lot of processing all over by restoring snapshots individually.

Screenshot showing PhaseContext.close() nested with PhaseTracker.completePhase() taking 15,088 ms for 1,438,187 calls

Yeah, imagine if this was called maybe a quarter the amount, but you really don't understand what it's doing there because completePhase() is a wildcard of "Ok, let's process captures, neighbor notification requests, and block physics."

Screenshot showing PhaseTracker.setBlockState() with World.notifyBlockUpdate being called 387,851 times taking 3,027ms and World.checkLight() called 211,731 times taking 1,711ms and some other proxied methods like isMainThread and getBlockLightOpacity until finally the only real PhaseTracker method that shows up is RestoringBlockPhaseState.doesBulkBlockCapture being called 759,010 times taking 227ms and then goes on with other stupid fast methods

Yeah, this means nothing because all of the block changes perpetuates a required notification to clients and light scheduled updates to where the Sponge relevant code bits are in the nanosecond ranges (which guess what, there's a reason why 227ms / 759,010 is roughly 300 nanoseconds, it's to do with the lack of precision of the JVM and computer clocks, you can read more on that here). Overall, the n amount of blocks changing will always incur a constant cost of at least the notification/lighting portion of MC's code.
Taking a step back

I am trying to move around 60,000 blocks including their tile entities and having to use BlockSnapshot and it's method restore(), this accounts for 52% of my block moving code's runtime. Most of which are calls to the PhaseTracker.

This is the most glaring issue of all, you've made no consideration of actually seeing "what are the costs" of moving that many blocks. You did one step to look into some of the methods and nested methods of those costs, and the circumstances are such that you didn't quite explore exactly how much each individual method costs and why. Only in the second to last screenshot do you show that in PhaseTracker.setBlockState is the vanilla MC code (top 6 time consuming methods in that screenshot) is accounting for 66% of the cost already, and those calls are significantly less than some of the similar calls to Sponge's own code.
Even when we consider that PhaseTracker.setBlockState is at this point a wrapper around the vanilla method, you're not really understanding how the PhaseTracker really functions, let alone how MC really functions with performing block changes. Part of the problem that you're grazing past is the screenshot of PhaseContext.close(), you didn't show what is nested within the completePhase() portion, and maybe you might've noticed it if you did look at it, but I'll give you a one sentence explanation: PhaseTracker.completePhase() is the wrapper around every single PhaseContext.close() and applying any and all captures, notifications, events, and post processing. In easier to understand ways: If you have 1,234,567,890 PhaseContext.buildAndSwitch()s, you'll have 1,234,567,890 PhaseContext.close()s and equally (almost always) PhaseTracker.completePhase()s.
Ok, so what? Why can't you optimize the PhaseTracker? I just want to move thousands of blocks...
To try and optimize the PhaseTracker, you have to understand how the logic works for block changes: A block change takes place and clients are notified, lighting is queued for an update, and neighboring blocks are notified through method call. This last one is where a lot of people don't understand that this is the actual cost of processing thousands of block changes. Each block change necessitates calling world.notifyNeighborOfStateChange() for each of the 6 neighboring blocks even if the block is air, and this is bordering on how the notification logic makes Redstone machines work. To optimize this, you'd be reinventing a system to improve nested notifications and propagation logic that can happen with block physics (Redstone wire updates it's neighbors on an update, and it's neighboring wires update their neighbors) to where it's doing an exhaustive depth-first iteration of chaining. So, the more complicated the blocks themselves that you're moving, the potentially more complicated (and countable) block notifications are going to be performed. The PhaseTracker simply acts as an arbiter of saying "ok, you want to do xyzzy, but we're restoring blocks, so you can't do xyzzy." so it "Saves time" a lot of the times by making those checks (like the 759,010 calls to RestoringBlockState.doesBulkBlockCapture) and avoiding other costlier calls.
To keep continuing

People have suggested using a BlockWorker, however, they do not handle the tile entities and I cannot find a way to move them separately.

Don't use block workers if you're going to avoid all the block physics or you already have a whole volume of blocks (like an ArchetypeVolume), it's not that you're going to run into the same problem, but you're effectively replicating a similar issue.

Would it be possible to optimise the PhaseTracker or implement a TileEntityVolumeWorker with the ability to place BlockStates and TileEntity at the same time?

Remember in one of your screenshots that there's thousands of calls to World.removeTileEntity during the block changes? That's because a block removal still has to be called, and then the new block has to potentially place a new TileEntity by creating them. The better solution is to use a Schematic or ArchetypeVolume. Both of which are demonstrated here in the CopyPasta plugin.
In summary

Profilers only tell half the story if you aren't investigating the full breath of what is costing time in a method call.
Thinking of time only and not the amount of calls for the time spent is one sided because of profiling skewed results down to the 300ns restriction
Just like a sorting algorithm, there's multiple ways to move thousands of blocks, but the way you chose is very time consuming and wastes a lot of compute cycles (and PhaseContexts) when there's better ways to solve the problem
Seriously consider the limit of just how much optimization can be done on the game, let alone Sponge's code when you want to throw around a stupid amount of block changes, there's possible ways to optimize the PhaseTracker's various bits, but nothing that is actually coming out from this
Don't just share screenshots of a profiling result, it's damn near useless.

I'm gonna close this as a support discussion because it's not worth any amount of time to speculate where some optimizations could be done when you consider that a lot of the Sponge code is executing at the native nanosecond timeframe, or wrapping around vanilla functions that are reimplemented in Sponge methods.

Thanks, Gabizou, it's been helpful. I've tried to give Profiler results but, as I've said, I'm new to it and don't really know what I'm doing. I'll study the schematic code and try implementing it. In regards to whether 60k blocks in less than 50ms is possible in Sponge, IDK, but I have seen it done in about 10ms using Bukkit, so I still have hope.

Okay, so thanks to the code you linked I finally figured out how to use the ArchetypeVolume.
Unfortunately, in my attempts ArchetypeVolume#apply() increases the processing time by almost 100%.

@gabizou ArchetypeVolume#apply() just wraps World#setBlock() for the block replacement, leading to the same amount of PhaseTracker calls.

I had some editing to my local Sponge code if having a single set of calls to the PhaseTracker improve much. Processing time was reduced from 330ms to 200ms (peak) and 160ms (avg).

In regards to whether 60k blocks in less than 50ms is possible in Sponge, IDK, but I have seen it done in about 10ms using Bukkit, so I still have hope.

This is dependent on how they're being set, just saying that it's being set tells me nothing of what systems are in place, whether the setting of blocks bypasses all events in CraftBukkit, whether it's using raw NMS, or worse, setting the blocks in the chunk array directly.

Unfortunately, in my attempts ArchetypeVolume#apply() ~increases the processing time by almost 100%.~ (reworked my code) offers no performance increase and does not invalidate the old tile entities.

So that might be from profiler bias, but I'm fairly sure there should be fewer physics changes overall if you're using the right flags (BlockChangeFlags.NONE) which would drastically reduce the amount of calls all around within the block worker.

@gabizou ArchetypeVolume#apply() just wraps World#setBlock() for the block replacement, leading to the same amount of PhaseTracker calls.

Again, don't conflate the amount of World.setBlock to the processing going on behind the scenes, there might be some lost handling from some refactoring in the past that might've increased the tracker's phase entry, but by no means should it be actually switching into a new PhaseContext for every block.

I did some editing to my local Sponge code if having a single set of calls to the PhaseTracker improved much.

I don't know what this means.

does not invalidate the old tile entities.

Right, because that's not what applying a schematic will do. Nothing about emptying the existing volume area is being considered when applying a schematic/archetype volume. No where does the API contract say it will remove existing blocks before applying the archetype.

In regards to whether 60k blocks in less than 50ms is possible in Sponge, IDK, but I have seen it done in about 10ms using Bukkit, so I still have hope.

This is dependent on how they're being set, just saying that it's being set tells me nothing of what systems are in place, whether the setting of blocks bypasses all events in CraftBukkit, whether it's using raw NMS, or worse, setting the blocks in the chunk array directly.

I will look into it. However, I simply meant that I wasn't going to give up.

Unfortunately, in my attempts ArchetypeVolume#apply() ~increases the processing time by almost 100%.~ (reworked my code) offers no performance increase and does not invalidate the old tile entities.

So that might be from profiler bias, but I'm fairly sure there should be fewer physics changes overall if you're using the right flags (BlockChangeFlags.NONE) which would drastically reduce the amount of calls all around within the block worker.

I was using that flag before. I stopped using the profiler I fell back to the timer my plugin uses to give the player information. It records processing time by fetching the system time at the start of translating the craft and comparing it to the system time when it has finished. It isn't as accurate but still enough to notice any major improvements. eg. a change of more than 20ms.

@gabizou ArchetypeVolume#apply() just wraps World#setBlock() for the block replacement, leading to the same amount of PhaseTracker calls.

Again, don't conflate the amount of World.setBlock to the processing going on behind the scenes, there might be some lost handling from some refactoring in the past that might've increased the tracker's phase entry, but by no means should it be actually switching into a new PhaseContext for every block.

I did some editing to my local Sponge code if having a single set of calls to the PhaseTracker improved much.

I don't know what this means.

I edited my local decompWorkspace copy of Sponge. It reduced the time my plugin recorded by about 100ms. Feel free to correct me if I am misusing the PhaseTracker calls: Gist

does not invalidate the old tile entities.

Right, because that's not what applying a schematic will do. Nothing about emptying the existing volume area is being considered when applying a schematic/archetype volume. No where does the API contract say it will remove existing blocks before applying the archetype.

This isn't part of the optimisation discussion if it's not meant to. However, I can't seem to find a method to invalidate the tile entities. This causes the tile entities to drop their contents as if broken by a player.

@gabizou Are my changes to Sponge correct? If so, should I look doing more changes (if possible) to optimise block placement?
Is there anything else I should be considering?

@Pulverizer We cannot see what those changes are easily because you've just posted your class with no signposting as to what has changed.
If you want us to look at them, at this stage, post a diff (use gif diff on your workspace).

Sorry, the link is supposed to go to the method I added. And that only seems to say which files I've edited?


Checkstyle report is generating for sun_checks instead of google_checks

The problem about the checkstyle that I mention in this issue #42 still exists.
See report generated:

In code too:

But this time I also got the cause for it.
In the project's pom file it is clearly mentioned that Google_checks are adopted.
See this

It is true that in the parent checkstyle module, the configuration is of google checks.
See

But the module that is configured in both depclean core and maven plugin is of sun_checks.
See this

So it can be fixed either by mentioning that sun_checks are adopted in parent pom file or replace the checkstyle with this one in both depclean core as well as  in maven plugin.
I can fix this issue but please suggest to me the correct way (mentioned above) of fixing this issue.

Hi @ABHAY0O7, thanks for reporting this issue.
Checkstyle is part of the DepClean CI pipeline. If you look at the pom.xml of the DepClean modules (eg. https://github.com/castor-software/depclean/blob/master/depclean-core/pom.xml#L48), you will notice that the configuration file used is the checkstyle.xml located at the root of the repo, which is actually a less strict version of the Google conventions, see https://github.com/castor-software/depclean/blob/master/checkstyle.xml.
If you run mvn checkstyle:checkstyle then the default maven-checkstyle-plugin is executed, which is configured to use the sun_checks. To run the Checkstyle configured for this project (which should trigger no errors), you should run mvn validate for if you want to run check Checkstyle goal (see https://github.com/castor-software/depclean/blob/master/depclean-core/pom.xml#L52) or mvn verify for the checkstyle goal that generates the report (see https://github.com/castor-software/depclean/blob/master/depclean-core/pom.xml#L52).
To fix the issue and get the correct report when running mvn checkstyle:checkstyle, the  property <checkstyle.config.location>../checkstyle.xml</checkstyle.config.location> needs to be added in the pom.xml (see https://stackoverflow.com/a/14010915/10480869).

@ABHAY0O7 Please close this issue IF https://github.com/castor-software/depclean/pull/71 fixed this issue. Thanks.

Thanks, @cesarsotovalero,
I checked it and the issue is solved.


 This includes breaking changes that:

tidy up and finalise the "build API"
rename this package to gravity-ui-web

If I'm not mistaken, this should bump our version to the big 1.0.0!
To be fair, it's high time we did that though. 0.x.y versions are meant to be for initial development and 1.0.0 is for when you start being used in production. Our Gravity lib has been used in production since May last year, when the Buildit website began using it.

Closing the PR, so that I can re-open it to re-trigger the Travis build because the repo rename is confusing it.

Re-opening so Travis kicks off again

Btw, I just did a semantic-release dry run and can confirm that it will bump the version to 1.0.0. :-)

:tada: This PR is included in version 1.0.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Replace the old model being used in slackbot in internal astronomer with our current model - update URL to point to new api url

[ ] Replace the old model being used in slackbot in internal astronomer with our current model
[ ] Update URL to point to new api url - for Weaviate
[ ] Update the ask-astro slack bot config with the latest model in internal astronomer

@mpgreg, @jlaneve @pgagnon might have more info regarding this ticket @Lee-W . You might want to connect with them.

@mpgreg @jlaneve @pgagnon could you please what's the current model we're using? is there anything more than changing the URLs? Thanks!

Changing the URL to the proper endpoint should be sufficient.

Got it. @sunank200 Do we have the URL already? If we do have it, I guess we can close this one then?

After discussing @sunank200 earlier, we already have the new URL and configuration ready. So, our next step is to replace the setup for the bot used in the internal astronomer channel. @jlaneve @pgagnon do you know who have access to the astronomer internal slack bot? Thanks!

Filed an IT ticket yesterday and sent another follow up today

IT ticket number #SR-6848

Just sent a follow up mail to IT again earlier

@mpgreg @jlaneve @pgagnon just checked with IT. It seems that they don't have permission either. Do you know who might have permission to the AskAstro bot? Thanks!

As discussed in slack, we'll hold this one until more detail provided

@pgagnon discussed with @jlaneve and marketing team , we are awaiting feedback on this

We're looking into providing Ask Astro to non-premium customers who will not retain Slack Connect with Astronomer after the first 30 days of their contract have elapsed (onboarding period). It's highly likely that the options we would offer these customers differ from those available to a public-facing audience (OSS Slack, non-customers, etc). We may need to keep separate codebases / separate app instances in Slack for these different purposes.

@pgagnon would you have an update/thoughts here, please?

[ ] Get slackbot creds
[ ] Reinstall slackbot with the new deployment

Thanks to @pgagnon . I was added as a collaborator for the app https://api.slack.com/apps/A05DXCBLKRA yesterday.
Will work together with @sunank200 for the next steps.

@sunank200 and I had connected earlier today. We discovered that just updating the URL would not be sufficient. The backend app also needs to verify that it's a genuine known app sending a request to process the response. Since at the api backend at the moment just accepts 1 oauth_settings creds, I am evaluating what could be the possible approaches here for us to use a single backend for 2 bots from different workspaces.
Will write a note here once I have more information to see if it's possible to use a single backend for multiple bots. In that case the scope of the ticket would evolve to also making code changes to accept 2 bots.
Otherwise, we could have another backend deployment catering to this 2nd bot. Meaning 1 instance each of the API service for each of the bots.

Created PR to add support for handling internal app's requests: https://github.com/astronomer/ask-astro/pull/236
This is needed before updating the URL for the app

The above PR adds implementation for supporting 2 bots with a single backend. However @pgagnon has also proposed to me over a Slack DM that perhaps we could install the same bot in multiple workspaces instead of having multiple bots and not having the need of supporting them with a single backend. Philippe has scheduled a meeting with me on Thursday evening 7.30 PM IST to discuss and co-ordinate on the same. I will be able to share more insights here then after our call.

Philippe and I connected over a call a while ago. He has suggested to install https://api.slack.com/apps/A05DXCBLKRA to the Airflow OSS Slack workspace instead of the currently installed one.
The steps to carry out this activity would be as below:

Switch backend for Astronomer’s workspace Ask Astro Slack app to the production application. This would involve updating URLs in the app across multiple known sections within the Slack app config.
Update secrets in the Ask Astro service's env vars for Slack Client ID, Client Secret and Signing Secret. I have access to those as Philippe has already added me as a collaborator the app
Uninstall the current Slack app from Airflow OSS Slack workspace
Install the Astronomer's workspace Ask Astro Slack app to the Airflow OSS Slack workspace using the URL https://<prod_service_url>/slack/install. This can only be done by an Admin the workspace. So we would need help from an authorized admin for the Airflow OSS Slack app.

cc: @sunank200 @phanikumv @kaxil

Philippe and I connected over a call a while ago. He has suggested to install the Astronomer workspace's Ask Astro Slack app https://api.slack.com/apps/A05DXCBLKRA (you may not be able to view this app, but I can, I was added as a collaborator by Philippe) to the Airflow OSS Slack workspace instead of the currently installed one. This app is already publicly distributed so it would allow us to install into multiple Slack workspaces.
The steps to carry out this activity would be as below:

Switch backend for Astronomer’s workspace Ask Astro Slack app to the production backend service. This would involve updating URLs in the app across multiple known sections within the Slack app config.
Update secrets in the Ask Astro service's env vars for Slack Client ID, Client Secret and Signing Secret. I have access to those credentials as Philippe has already added me as a collaborator to the app
Uninstall the current Slack app from Airflow OSS Slack workspace
Install the Astronomer's workspace Ask Astro Slack app to the Airflow OSS Slack workspace using the URL https://<prod_service_url>/slack/install. This can only be done by an Admin in the workspace. So we would need help from an authorised admin for the Airflow OSS Slack workspace

cc: @sunank200 @phanikumv @kaxil

@pankajkoti This approach sounds good to me till the point the bot is called Ask Astro as previously on OSS as well.

yes @sunank200 the app's name is Ask Astro indeed and it has the newer logo too

@pankajkoti to follow up with @kaxil or @ash on the app deployment

Reached out to Kaxil for help on Slack thread. Kaxil has some time today, so hopefully we will carry out this activity today

The activity for having a single Ask Astro Slack App is now complete and was carried out with Kaxil's help as per the flow in https://github.com/astronomer/ask-astro/issues/33#issuecomment-1871236188 . Thanks to @vatsrahul1001 & @pankajastro for joining the activity.

I will close the ticket now as the activity is complete as per the plan.


Mac OS support

Do you have any plans to support Mac OS?
I have a project for mac, and I really need pinging
Now if I try to use this I got an error SwiftyPing.PingError.invalidLength(received: 0) and it ignoring time interval, but in Ios it working perfectly

It works fine for me on Mac. The SwiftyPingTest project now includes a Mac version, give it a try and let me know whether it works on your machine. Note that the Mac app has to have the incoming and outgoing network entitlements enabled.

It was my mistake, my project cant use incoming connections. I enabled and it works fine. Thanks for the answer)


Typo?

“What disk types support snapshots?
Premium SSD, standard SSD, and standard SSD...”
Should it be “standard SSD, and standard HDD”? Standard SSD is mentioned twice.

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

ID: 263abdef-3478-8261-6c4c-5d608698ba4e
Version Independent ID: 61ef3094-fda7-d7b9-e19c-4e8f6a5b2f2d
Content: Frequently asked questions (FAQ) about Azure IaaS Windows VM disks
Content Source: articles/virtual-machines/windows/faq-for-disks.md
Service: virtual-machines-windows
Sub-service: disks
GitHub Login: @roygara
Microsoft Alias: rogarana

@fedorovdima
Thanks for the question! We are investigating and will update you shortly.


compatible with tsp generation

For now, we want to keep compatible when tsp file refer to openapi package like: https://github.com/swathipil/azure-rest-api-specs/blob/41dd0b3709f71b20ac9eb6e239902bcd4fc4bb85/specification/schemaregistry/SchemaRegistry/main.tsp#L4

/check-enforcer override


Show recently opened folders from windows taskbar

VSCode Version: 1.5.3
OS Version: Windows 10 Home (1607)

Steps to Reproduce:

Have Windows OS
Pin VSCode to taskbar
Open and close multiple folders
Right click VSCode taskbar icon
Notice no recently opened folders/files :(

And it would be cool if shift-clicking the taskbar icon would open another instance. But that's even more minor than this minor feature request.
Great Job on it so far though! Loving it!

This should work with https://github.com/Microsoft/vscode/issues/241


Feature/express helpers test

This PR adds basic pytest for the helper functionalities provided in Express:

Logger
Storage
kfp Utils
io
manifest

Next steps is to include tests for the Express pandas components + run tests with github actions

Thanks Philippe. Can you rebase on main? Now it shows some changes already in main in the diff which is confusing.

Thanks Philippe. Can you rebase on main? Now it shows some changes already in main in the diff which is confusing.

done

You are importing from express_components in the tests. Is this based on the old repo structure?
Could you also add

Pylint for the tests in pre-commit
Running the tests in github actions

@RobbeSneyders
I was just checking the pre-commit setup. It differs a bit from the bitbucket setup in a few ways:

It seems like we do not have a .pylintrc' configured. Should we add one modify .pre-commit-config.yaml` to use it?
In BB we use pylint-modules along with the pylint.py script and that is integrated with bitbucket pipelines but here we're only using the pylint-modules for the license checker. How to define which modules to lint? how to run it locally?

It seems like we do not have a .pylintrc configured. Should we add one modify .pre-commit-config.yaml to use it?

No .pylintrc indeed. I fixed all the issues so it works with the default settings. I say we try to keep it this way :)

In BB we use pylint-modules along with the pylint.py script and that is integrated with bitbucket pipelines but here we're only using the pylint-modules for the license checker. How to define which modules to lint? how to run it locally?

We should actually remove the pylint-modules and run_license_check.sh since we no longer use it after https://github.com/ml6team/express/pull/7.
We can run pylint on multiple directories by extendingo the files argument of the pre-commit hook, or adding a separate hook. Eg. (untested):
    hooks:
      - id: pylint
        ...
        files: |
            (?x)^(
                express/|
                tests/
            )$
        ...


It's not working for me.

this is my code
app.use(minifying({   js_match : /\.js$/,   css_match : /\.css$/ })) right before express static middleware.

no js or css file is being minified.
not getting any response to data APIs

I tried using compression, that works just fine. But minification , with or without compression is not working.

Hi, could you try with just app.use(minifying())?
js_match and css_match are matched with content-types, instead of urls.

I had tried with just app.use(minifying()) but it didn't work

+1
Using App.use(require('express-minify')()); - not minifying any css or javascript files for me either.

It's working on our production vs. development... has anyone noticed that minifying should probably be minify ?
Also what version is your express?
npm update tried?

@Martii

const minifying = require('express-minify') so it shouldn't be a problem.
express version is 4.14.0
not even touching the MIME content types
I am using it along with compression middleware which is working fine but not this one.

@nnIIInnjA Same with me, apart from not using the compression middleware.

@Kondax

UglifyJS doesn't officially support ES6/ES2016

That's why OUJS has forked the harmony branch to coincide with release that express-minify here uses. See our fork at https://github.com/OpenUserJs/UglifyJS2/tree/harmony%2Brenamed .

Also just noticed, CSS files won't be minified if you have an @import statement in the CSS.

That's #18 here.

I am using it along with compression middleware which is working fine but not this one.

We are too although I haven't checked the headers recently to ensure Gzippin is occuring... See https://github.com/OpenUserJs/OpenUserJS.org/blob/master/app.js#L272
In general it's quite picky getting the order right and we rarely mess with it. I just retested this yesterday because of this issue too. I'm usually watching for potential issues for our usage as well.

const minifying...

@nnIIInnjA
Have you tried var... perhaps there's a node issue with ES6 let... don't know for sure... we are primarly ES5 with the minification as experimental right now with Userscripts since uglifyjs2 ES6 support is on a branch and not release... however our actual production is using release uglifyjs2.

Yeah. The default error behavior is to return the original content (so that errors won't break anything) when there is a minifying error. https://github.com/breeswish/express-minify#customize-onerror-behavior
Since more and more people is using ECMAScript 2016+ which is not supported by uglifyjs currently, I would update the documentation to suggest users to add an error handling logic so that they will get noticed about this issue.

..add an error handling logic...

Yep that's here in ours from #44 here... Ace editor (ace-builds) sometimes, but not all the time, does throw one with release uglifyjs2. I've been watching that project too... haven't pinned down what Ace is doing and how to reproduce yet but it's only about twice a month.

@Martii I tried with var too. not working :(

@Martii ah right, makes sense. Maybe an issue will have to be opened for UglifyJS2 not throwing errors correctly.
Well, at least everything apart from CSS seems to be minified for the most for me. CSS randomly works or not - but that library is super old.

@nnIIInnjA
Is your transpiler middleware too? e.g. what is it on npmjs.com and I can try to give it a test whirl in our development. We're using the same version of express as you... we're also still on node 4.x latest but development here on my dev station is<EMAIL_ADDRESS>and it still returns the same results when I kick dev into ignoring dev vs pro and debug modes. Better question is your project open source so I can try it out with a git checkout?
@Kondax

Maybe an issue will have to be opened for UglifyJS2 not throwing errors correctly.

They currently allow "downstream" or "across the pond" to handle errors... express-minify catches them and allows additional processing to maintain site integrity... you wouldn't want a site just erroring out and having to restart the process*(es)*. Proposing that would be a breaking change in many, many projects that utilize uglifyjs2 though... not to mention the CLI. I linked in our error handler to show how to put in a handler for anyone watching including you... I may bump our body value up to 200 characters as it took me a few months to track down that Ace had an intermittent glitch on occasion but if it doesn't minify then that's why I'm over there to report issues. We have release (master) and harmony packages in order to help improve it... anyhow... it's up to you but breaking changes can be an issue in itself over there. They seem very receptive and I know how long development really takes especially in a modular system like node/npm.

but that library is super old.

Which libary now?

@Martii nope transpiling is done beforehand and not in express.
`const h2 = require('http2')
const fs = require('fs')
const config = require('config')
const path = require('path')
const httpProxy = require('http-proxy')
const express = require('express')
const R = require('ramda')
const request = require('request')
const cookieParser = require('cookie-parser')
const gZipping = require('compression')
const minify = require('express-minify')
const app = express()
app.use(cookieParser())
express.request.proto = h2.IncomingMessage.prototype;
express.response.proto = h2.ServerResponse.prototype;
// to gZip files
app.use(gZipping())
// to minify files
app.use(minify())
// to serve static files
app.use('/', express.static(__dirname))`

@Martii
Update :
I've tried hitting just to get the styles.css file and i got this :-
Resource interpreted as Document but transferred with MIME type text/css: "https://localhost:5555/styles.css".

@nnIIInnjA
After I built a basic package.json for your requires... and added in a listening port of 3000 at the tail of app.js... it's minifying our common.css copy here in<EMAIL_ADDRESS>:\
package.json
{
  "name": "Test",
  "description": "Test",
  "version": "0.0.0",
  "main": "app",
  "dependencies": {
    "http2": "3.3.6",
    "config": "1.21.0",
    "http-proxy": "1.15.1",
    "express": "4.14.0",
    "ramda": "0.22.1",
    "request": "2.75.0",
    "cookie-parser": "1.4.3",
    "compression": "1.6.2",
    "express-minify": "0.2.0"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/nnIIInnjA/test"
  },
  "license": "(GPL-3.0 AND GFDL-1.3)"
}

http://localhost:3000/common.css
Only thing that I can think of is maybe your platform and or node is out of date. Did you build your own node or use someones prepackage? What is your platform btw?

@Martii
node version :- 6.6.0
MacOs Sierra

OS X is the one platform I haven't tried our project on... what is your current Xcode version? Linux here.

@Martii I haven't installed xcode. I don't see why that's relevant to our issue.
OS version :- macOS Sierra 10.12

I haven't installed xcode. I don't see why that's relevant to our issue.
If you build node it is. Didn't get an answer if you prepackaged or not. They are on 8 on El Capitan... and it's quite relevant as there as many issues. I'm not ready to upgrade my Mac to Sierra yet for a month or more as Apple has too many issues with Xcode right now in El Capitan.  Anyhow... your snippet works on Linux so I'm not entire sure what the deal is.

@Martii ohh sorry, i missed there. I am not building node, it's prepackaged.

Homebrew (which says 6.2.1 here on my Mac but it's El Capitan build) or direct image from node ? You are one version behind the latest release at nodejs.. I'm at 6.7.0 on Linux.

Resource interpreted as Document but transferred with MIME type text/css: "https://localhost:5555/styles.css".

With this your MIME types might be foo'd or set incorrectly... http://www.rubicode.com/Software/RCDefaultApp/ , or equivalent, should at least be able to tell you if the OS itself is set correctly with those MIME types but that doesn't exclude if node is built incorrectly or for an older OS X.

@Martii i've had older version of node sometime back 6.1.0 which i installed using direct image of node. recently i updated to 6.6.0 using brew.

Okay after I installed brews version onto El Capitan and using the coded snippets above it is minifying our common.css.
Sooooooooooo... at least El Capitan is confirmed to work with<EMAIL_ADDRESS>and<EMAIL_ADDRESS>here. My guess it's something in Sierra and/or the built package of node on brew (they call them bottles here on my Mac)... I would suggest investigating if your 6.6.0 is for sure Sierra compatible and make sure OS X is up to date. I also have the "Command Line Tools" from the App store installed along with Xcode for another project.

@Martii I just tried with http1 , it seems to work fine. I think the issue is with http2 which i am using in my project

@Martii In regards to error handling, I mean if something for some reason fails to minify. I dumped your error handler into my application to see if it would help - still only errors randomly.
CSSMin is the library that seems rather outdated - no updates for a few years. That's what randomly works for minifying my CSS.

@Kondax

CSSMin is the library that seems rather outdated

Well if you see an issue might want to file it over there. With as fast as everything changes sometimes it's good to be reminded if something isn't working in a dependency.

still only errors randomly

If you can pin it down to a particular rule set file a bug report on his site. :) All of our CSS seems to be working and never had a CSS glitch in our logs yet... just JavaScript every once in a while for production. We even use LESS compiling to CSS and that's been good too.

@Martii well, when I say random I honestly mean it. Without changing any of my application or the files to be minified, sometimes they will be minified and sometimes not. No idea how to track the cause of that.

Still seems to be icky for me - not minifying certain files, not erroring either. If I minify the files directly through uglifyjs2, it works. Weird.

Wait wait, you use minifying?
The command is without 'ing':
 app.use(minify());

Not if I named the variable minifying.
On Thu, 3 Nov 2016 at 4:31 pm, Melroy van den Berg<EMAIL_ADDRESS>wrote:

Wait wait, you use minifying?
The command is without 'ing':
app.use(minify());
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/breeswish/express-minify/issues/49#issuecomment-258196613,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AQFo-nWOU54AeNff29KuA0ToaYwK8FSIks5q6gxNgaJpZM4KSF68
.

Noticed, I changed my comment view the webpage plz
On Nov 3, 2016 18:54, "Tayler King"<EMAIL_ADDRESS>wrote:

Not if I named the variable minifying.
On Thu, 3 Nov 2016 at 4:31 pm, Melroy van den Berg <
<EMAIL_ADDRESS>wrote:

Wait wait, you use minifying?
The command is without 'ing':
app.use(minify());
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<https://github.com/breeswish/express-minify/issues/49#
issuecomment-258196613>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AQFo-
nWOU54AeNff29KuA0ToaYwK8FSIks5q6gxNgaJpZM4KSF68>
.

—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/breeswish/express-minify/issues/49#issuecomment-258222352,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAmYvnFPNU40ZrkHCy9sI-RSDjjS36cBks5q6h_LgaJpZM4KSF68
.

Variable name doesn't change anything, nor does switching between the type of variable.
Static folder is of course set. I've switched to webpack anyhow now, since this is just annoying.

I understand, strange I can't not reproduce the issue yet. Since in my case it just works.. Could it be owner/privileges rights problem? Read & write.

Nope, has all the privileges needed.
On Fri, 4 Nov 2016 at 1:10 pm, Melroy van den Berg<EMAIL_ADDRESS>wrote:

I understand, strange I can't not reproduce the issue yet. Since in my
case it just works.. Could it be owner/privileges rights problem? Read &
write.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/breeswish/express-minify/issues/49#issuecomment-258426161,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AQFo-ivjENHx2fC4M9xTO1Suut6hz9_Nks5q6y45gaJpZM4KSF68
.

I'm going to add some debug output to ease the debugging.

js/css were not minifying also for me. I have an nginx on serving my node application and static files were served by nginx:
location ~ .(html|js|css|gif|jpg|png)$ {
root ...
}
To make js/css minified I changed it to
location ~ .(html|gif|jpg|png)$ {
root ...
}

@martinlevesque Yes you have to use express to serve static files otherwise it won't work.

Closed due to no activity for long time.

One of my js files were not minified, either. After some experiments, I found out that the reason why it was not minified was that it used arrow functions. It worked after I changed it to a normal function.

@searene Cc: @breeswish

I found out that the reason why it was not minified was that it used arrow functions

Bad news ... ES5 is the only suppport that uglifyjs gives now and they have abandoned their harmony branch to concentrate only on older versions of ECMAScript (JavaScript).
Good news... ES6+ is being continued at /fabiosantoscode/terser and should offer feature parity for this project here. So you may utilize the uglifyJsModule option if you wish in this project.

It worked after I changed it to a normal function.

From experience the arrow operator doesn't offer any perceived enhancement and actually is a watered down version of function as you figured out.


Introduced new JsonRequest class to merge logic of auth token and refresh token as much as possible

Hi.
This pull request does not contain any of bug fixes. This is just to merge similar logic to one, in order to make maintenance easy.
Operation flow and logic between initial retrieval of auth token and refreshing of auth token is pretty similar, so I made new class to merge those logic as much as possible. This makes total source code smaller.
I hope you like this patch.

@francais-harry thank you so much
You are pretty much maintaining the library more than me at this point.
I am making you a collaborator of this project :)

@championswimmer
Thank you for your comment and invitation. I have accepted it.


Backport #11830 to 1.4.x

interop test failures:

https://github.com/grpc/grpc/issues/10686
https://github.com/grpc/grpc/issues/10390


Rename environment_variable_service to dot_keys_variable_service

Same change as #696

.keys manager is limited and only focuses on the non-user specific ENV variables. For all user managed ones, we're gonna use a new data source + service
More information: #643
We're gonna use the names EnvironmentVariable and EnvironmentVariableService for ENV variables that are provided by the user

Self-approved to keep moving for now 🚔
Test it locally


tscrypter/28/add asyncapi ui

closes #28
Everything is exposed via configuration. Defaults to making a request to https://playground.asyncapi.io/

Opened this up as a draft so you can play with it. I just need to add tests around some of the functionality in the middleware

Looks great! Have a few pointers & questions though. I'll add them as review comments


Stages lists:  Ability to see more than 50 candidates at a time

Is your feature request related to a problem? Please describe.
We have feedback from staff that it is difficult to update statuses when not all the candidates appear in the list.  The current view shows only 50 and until you update a status the other candidates do not appear.
Describe the solution you'd like
I would either like a way of displaying all candidates or through the updating of statuses on each page with 50 on one page.
Describe alternatives you've considered
Ultimately I want to sort columns and filter information - ie if you update 25 people to a passed status I can filter those by only showing those who had applied.
Additional context
Add any other context or screenshots about the feature request here.
https://apply-admin.judicialappointments.digital/exercises/2k6Qo2JaesamXjhreHiq/stages/shortlisted

Comment from user
Can you please extend the list of 50 candidates that we can see on the platform to the full list of candidates selected for interview. I need to change the status of one candidate who has withdrawn due.

Just copying from my messages with @lloback:
So for this one the 'easy' option seems to just be to increase the number of rows shown in the table. But that isn't a great option as it doesn't solve the underlying issue, doesn't scale and you end up with a huge page.
The better option would be to add some pagination on the table component, I think.
We could take a parameter with the exerciseID in the Store to set the limit. Ideally we'd add a dropdown to set this limit on the frontend, but I think hardcoding it for now would be okay.
If you added forward/back buttons to the component you could then just adjust the indexes on the array that are shown, and skip forwards/back through said array.
One thing to note is that we should make this change across all of the stages pages (Shortlisted, Selected, Review, Recommended, Handover) for consistency and because it will likely come up again anyway.

Agree with @crablab that we should not add more rows unless there are several users who have this same issue.
If there is a user need then we could try to increase the number of table rows to say 100 (or whatever 'number' is reasonable from the users perspective).
I have a pagination example in my prototype, but here is a screenshot to show how the user can go back and forth:

Whilst we are working on adding Pagination to the Table component I think we should remove the list size limit in Stages. This is a very quick change to make. For lots of data the UI will not be as efficient as we'd like but at least the team will be able to do what they need to.
Pagination will then follow as swiftly as possible via task #542

A hot fix has now been applied in version 0.15.1.
This ticket will therefore be closed and subsequent work on the table component carried out under #542


Feature Request: Sidebar AutoReveal Filtering

Several people have brought up instances where explorer.autoReveal, when activated, causes an undesirable change to the sidebar. It would be nice if there were a richer way to configure this option.
For me, the main complaint with autoReveal is when i ctrl-click on a type in a TypeScript project, which jumps me deep into node_modules where the .d.ts file is. i'll usually look through that file, close it, and go back to what i was coding. However, because of autoReveal, i now have node_modules expanded, which on large projects completely overwhelms my sidebar. I'd like to have a way to either explicitly add paths to ignore, or have a way to use say, .gitignore's paths (i know they're evaluated in some fashion since they're de-emphasized visually in the sidebar).
I'm aware that there's a way to hover/display a pop-up of a definition, but more often than not, i'll just use the default 'go to' since its the easiest, and in many cases i do need to see more context from that overall typing definition file.

This is a fair feature request to add an auto reveal ignore setting which contain a glob pattern of files, however we do not have plans to add this in the upcoming time frame. Thus assigning to backlog for now. Thanks


Adaptive Cards in Power Virtual Agents

Link to feature: https://adaptivecards.productboard.com/feature-board/planning/features/5300382

Not currently in scope for the near future.


Update to 2018 edition

Update all crates to 2018 edition with some formating. Let me know if you don't want the formatting in this PR.
Update README example_setup to 2018 edition.

@Marwes, are we okay to merge this since @gardell approved?


Add better help docs to kup

The help command has been extended so that each sub-command has a dedicated help doc, e.g:

This is the script that gets curled onto users systems: https://github.com/runtimeverification/k/blob/master/package/nix/install
I'm pretty sure we just need to update that script to source kup from this repo the first time around? Though I can't really see how to do so from that script, because I don't see where it actually downloads and install k or kup :laughing: .
But that should be the only adjustment needed, AFAICT.

The feature-set looks good to me, except the install script not needing to live here. Love the detailed documentation :)


fix(onyx-756): hide unpublished viewing room / editorial notifications from activity panel

This PR resolves ONYX-756
Description
Hides notifications which do not have published viewing rooms / article within them.
PR Checklist

[x] I have tested my changes on iOS and Android.
[x] I hid my changes behind a feature flag, or they don't need one.
[x] I have included screenshots or videos, or I have not changed the UI.
[x] I have added tests, or my changes don't require any.
[x] I added an app state migration, or my changes do not require one.
[x] I have documented any follow-up work that this PR will require, or it does not require any.
[x] I have added a changelog entry below, or my changes do not require one.

To the reviewers 👀

[ ] I would like at least one of the reviewers to run this PR on the simulator or device.

Changelog updates
Changelog updates
#nochangelog
Need help with something? Have a look at our docs, or get in touch with us.

Warnings

:warning:

✅ No changelog changes

  Generated by :no_entry_sign: dangerJS against 80451bd2801e34f58f949fbb315dd39cb45c0769


fix(curriculum): update debugging challenge (fcc vs browser console)

I did a quick rewrite of this challenge so it makes more sense.

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[x] All the files I changed are in the same world language (for example: only English changes, or only Chinese changes, etc.)
[x] My changes do not use shortened URLs or affiliate links.

Closes #16958

Thanks @moT01, LGTM :+1:

When testing this again - I noticed that the first test passes with no code entered because the code tested for is in the comment of the seed code - @RandellDawson @ojeytonwilliams Don't you guys have another helper function for removing comments? Or maybe we could just reword it to say "Clear the console" or something.

const removeJSComments = str => str.replace(/\/\*[\s\S]*?\*\/|\/\/.*$/gm, '');

@RandellDawson and I have been discussing making these available in all tests as they turn out to be useful so often.  I'll try and help out with this soon.  Well, soonish...

Thank you for your contribution to the page! 👍
We're happy to accept these changes, and look forward to future contributions. 🎉

Yea - They have been used in quite a few places, it would be nice if we could keep them in a global utils folder or something and import them so we don't have to rewrite them in each file.


Possible duplicated Interface OpenIssueReporterArgs

The interface OpenIssueReporterArgs  seems to be declared almost the same in two different places:
https://github.com/microsoft/vscode/blob/0b3aa0a6ea58a7cda4dfccd3322490b5241ef059/src/vs/workbench/contrib/issue/common/commands.ts#L8
and
https://github.com/microsoft/vscode/blob/0b3aa0a6ea58a7cda4dfccd3322490b5241ef059/src/vs/workbench/api/common/apiCommands.ts#L177
The only difference being that in the first one extensionId? is also optional.
Is this meant to be like this? Should I send a PR unifying this code?

This is intentional, one of these is for use from the extension API and one is for internal use. An extension calling the command must pass an extensionId, so it is required there. Internally, the issue reporter can be opened without this argument

Thanks @RMacfarlane
Are there docs somewhere where I can read more about the internals of VSCode?

There's a bit of information here https://github.com/microsoft/vscode/wiki/Source-Code-Organization
and looking at https://code.visualstudio.com/docs/getstarted/userinterface might be helpful for learning the names of UI pieces, which should be matched in code

Thanks again :)


Minor edits to ID3A.json

@vkuznet: I made a few more minor edits to ID3A.json. Some of the list_str keys had duplicate or non-applicable entries.

@jpk96, I merged your PR. FYI, we have automated build verification and once PR is merged you can look at gitlab workflows and if they pass the changes are automatically propagated to chessdata:8244 server which developers can use to immediately see them in action. So, you may check our dev server and see your changes.


Cranelift: Incorrect abi for i128, i128 return value on x86_64 sysv

Expected Results
All return values are returned using a single return pointer.
Actual Results
Return values are put into registers where possible and on the stack for the rest.
Versions and Environment
Cranelift version or commit: 0.111
Operating system: Linux
Architecture: x86_64
Extra Info
This is one of the causes for https://github.com/rust-lang/rustc_codegen_cranelift/issues/1525. The same issue may exist on aarch64 and other archs too, but haven't checked yet.

PR's opened while working on this:

https://github.com/bytecodealliance/wasmtime/pull/9253
https://github.com/bytecodealliance/wasmtime/pull/9258

Found another issue: The x86_64 and riscv64 backends add an implicit return pointer after all other arguments rather than as first argument.

Expected Results
All return values are returned using a single return pointer.

Actually, LLVM passes the return value on the stack if it doesn't fit in registers. It doesn't use a return area pointer.

As of https://github.com/rust-lang/rust/pull/131211 rustc should no longer emit this return type. If this is indeed the case, I propose to deny any return type that doesn't fit in the abi designated return value registers for at least the system_v and windows_fastcall call convs. And ideally also for every other call conv to be able to get rid of the implicit sret argument introduction in the abi calculation code which complicates this code by a fair bit.


Incremental Build Fails - Cannot Find Implementation

MacWire Version: 2.11-2.2.0
Play! Version: 2.11-2.3.10
The incremental compilation fails when adding/removing a class file with:

java.lang.RuntimeException: Cannot find implementations of class class controllers.FooBarGong!
at com.softwaremill.macwire.InstanceLookup$class.lookupSingleOrThrow(InstanceLookup.scala:13) ~[util_2.11-2.2.0.jar:2.2.0]
at com.softwaremill.macwire.Wired.lookupSingleOrThrow(Wired.scala:10) ~[util_2.11-2.2.0.jar:2.2.0]
at Global$.getControllerInstance(Global.scala:41) ~[na:na]
...

Resolution succeeds provided I delete the build output folder do a complete project rebuild.
Upon further investigation, I have learned of an inconsistent classloader state between stack frames as indicated by calling the following from the subject stack frame:
((ClassLoader)this.getClass().getClassLoader()).loadClass("controllers.FooBarGong")
Lookup succeeds from stack frame Global$.getControllerInstance(Global.scala:41) ~[na:na] (class loader ReloadableClassLoader(v1)) but fails to find the class from the deeper stack frame com.softwaremill.macwire.Wired.lookupSingleOrThrow(Wired.scala:10) (class loader PlayDependencyClassLoader)
The call site is fairly simple:
package modules

import play.api.Play
import play.api.libs.ws.WS

import controllers._

import com.softwaremill.macwire._
import services._

object ApplicationModule extends ControllerModule with ServiceModule

trait ControllerModule extends ServiceModule {
  import Play.current

  lazy val fooBarGongController = wire[FooBarGong]
}

Do I understand correctly that all the errors above are compile-time?
I'm not sure if I can do anything on the MacWire side, this looks like a problem in resolving class file dependencies on the compiler level ... in interaction with the macro system


Python 3.10 SWA managed functions with response streaming intermittently fail to load on cold start.

Describe the bug
Python 3.10 SWA managed functions that implement streaming, intermittently fail to load on cold start. This issue does not occur with identical code/host.json in a self-managed consumption function app deployment, only when deployed as part of a SWA.
Due to startup failures clients frequently return 404 errors.

Application Insights shows that the functions are not always loaded

App insights logs from failed startup:
timestamp [UTC]	message
5/24/2024, 9:20:02.469 AM	Initializing Warmup Extension.
5/24/2024, 9:20:02.520 AM	Initializing Host. OperationId: 'ceff11f0-71a4-4cec-92b2-8815f2aac725'.
5/24/2024, 9:20:02.521 AM	Host initialization: ConsecutiveErrors=0, StartupCount=3, OperationId=ceff11f0-71a4-4cec-92b2-8815f2aac725
5/24/2024, 9:20:02.531 AM	"ApplicationInsightsLoggerOptions
{
  ""SamplingSettings"": {
    ""EvaluationInterval"": ""00:00:15"",
    ""InitialSamplingPercentage"": 100.0,
    ""MaxSamplingPercentage"": 100.0,
    ""MaxTelemetryItemsPerSecond"": 20.0,
    ""MinSamplingPercentage"": 0.1,
    ""MovingAverageRatio"": 0.25,
    ""SamplingPercentageDecreaseTimeout"": ""00:02:00"",
    ""SamplingPercentageIncreaseTimeout"": ""00:15:00""
  },
  ""SamplingExcludedTypes"": null,
  ""SamplingIncludedTypes"": null,
  ""SnapshotConfiguration"": null,
  ""EnablePerformanceCountersCollection"": true,
  ""HttpAutoCollectionOptions"": {
    ""EnableHttpTriggerExtendedInfoCollection"": true,
    ""EnableW3CDistributedTracing"": true,
    ""EnableResponseHeaderInjection"": true
  },
  ""LiveMetricsInitializationDelay"": ""00:00:15"",
  ""EnableLiveMetrics"": true,
  ""EnableLiveMetricsFilters"": false,
  ""EnableQueryStringTracing"": false,
  ""EnableDependencyTracking"": true,
  ""DependencyTrackingOptions"": null,
  ""TokenCredentialOptions"": null,
  ""DiagnosticsEventListenerLogLevel"": null,
  ""EnableAutocollectedMetricsExtractor"": false,
  ""EnableMetricsCustomDimensionOptimization"": false
}"
5/24/2024, 9:20:02.532 AM	"LoggerFilterOptions
{
  ""MinLevel"": ""None"",
  ""Rules"": [
    {
      ""ProviderName"": null,
      ""CategoryName"": null,
      ""LogLevel"": null,
      ""Filter"": ""<AddFilter>b__0""
    },
    {
      ""ProviderName"": ""Microsoft.Azure.WebJobs.Script.WebHost.Diagnostics.SystemLoggerProvider"",
      ""CategoryName"": null,
      ""LogLevel"": ""None"",
      ""Filter"": null
    },
    {
      ""ProviderName"": ""Microsoft.Azure.WebJobs.Script.WebHost.Diagnostics.SystemLoggerProvider"",
      ""CategoryName"": null,
      ""LogLevel"": null,
      ""Filter"": ""<AddFilter>b__0""
    },
    {
      ""ProviderName"": ""Microsoft.Azure.WebJobs.Logging.ApplicationInsights.ApplicationInsightsLoggerProvider"",
      ""CategoryName"": null,
      ""LogLevel"": ""Trace"",
      ""Filter"": null
    }
  ]
}"
5/24/2024, 9:20:02.533 AM	"LanguageWorkerOptions
{
  ""WorkerConfigs"": [
    {
      ""Description"": {
        ""Language"": ""python"",
        ""DefaultRuntimeName"": null,
        ""DefaultRuntimeVersion"": ""3.10"",
        ""SupportedArchitectures"": [
          ""X64"",
          ""X86"",
          ""Arm64""
        ],
        ""SupportedOperatingSystems"": [
          ""LINUX"",
          ""OSX"",
          ""WINDOWS""
        ],
        ""SupportedRuntimeVersions"": [
          ""3.7"",
          ""3.8"",
          ""3.9"",
          ""3.10"",
          ""3.11""
        ],
        ""SanitizeRuntimeVersionRegex"": null,
        ""WorkerIndexing"": ""true"",
        ""Extensions"": [
          "".py""
        ],
        ""UseStdErrorStreamForErrorsOnly"": false,
        ""DefaultExecutablePath"": ""python"",
        ""DefaultWorkerPath"": ""/azure-functions-host/workers/python/3.10/LINUX/X64/worker.py"",
        ""WorkerDirectory"": ""/azure-functions-host/workers/python"",
        ""Arguments"": [],
        ""WorkerArguments"": null
      },
      ""Arguments"": {
        ""ExecutablePath"": ""python"",
        ""ExecutableArguments"": [],
        ""WorkerPath"": ""/azure-functions-host/workers/python/3.10/LINUX/X64/worker.py"",
        ""WorkerArguments"": []
      },
      ""CountOptions"": {
        ""SetProcessCountToNumberOfCpuCores"": false,
        ""ProcessCount"": 1,
        ""MaxProcessCount"": 10,
        ""ProcessStartupInterval"": ""00:00:10"",
        ""ProcessStartupTimeout"": ""00:01:00"",
        ""InitializationTimeout"": ""00:00:10"",
        ""EnvironmentReloadTimeout"": ""00:00:30"",
        ""ProcessRestartInterval"": ""00:00:10"",
        ""ProcessShutdownTimeout"": ""00:00:10""
      }
    }
  ]
}"
5/24/2024, 9:20:02.533 AM	"LoggerFilterOptions
{
  ""MinLevel"": ""None"",
  ""Rules"": [
    {
      ""ProviderName"": null,
      ""CategoryName"": null,
      ""LogLevel"": null,
      ""Filter"": ""<AddFilter>b__0""
    },
    {
      ""ProviderName"": ""Microsoft.Azure.WebJobs.Script.WebHost.Diagnostics.SystemLoggerProvider"",
      ""CategoryName"": null,
      ""LogLevel"": ""None"",
      ""Filter"": null
    },
    {
      ""ProviderName"": ""Microsoft.Azure.WebJobs.Script.WebHost.Diagnostics.SystemLoggerProvider"",
      ""CategoryName"": null,
      ""LogLevel"": null,
      ""Filter"": ""<AddFilter>b__0""
    },
    {
      ""ProviderName"": ""Microsoft.Azure.WebJobs.Logging.ApplicationInsights.ApplicationInsightsLoggerProvider"",
      ""CategoryName"": null,
      ""LogLevel"": ""Trace"",
      ""Filter"": null
    }
  ]
}"
5/24/2024, 9:20:02.534 AM	"FunctionResultAggregatorOptions
{
  ""BatchSize"": 1000,
  ""FlushTimeout"": ""00:00:30"",
  ""IsEnabled"": true
}"
5/24/2024, 9:20:02.534 AM	"ConcurrencyOptions
{
  ""DynamicConcurrencyEnabled"": false,
  ""MaximumFunctionConcurrency"": 500,
  ""CPUThreshold"": 0.8,
  ""SnapshotPersistenceEnabled"": true
}"
5/24/2024, 9:20:02.535 AM	"SingletonOptions
{
  ""LockPeriod"": ""00:00:15"",
  ""ListenerLockPeriod"": ""00:01:00"",
  ""LockAcquisitionTimeout"": ""10675199.02:48:05.4775807"",
  ""LockAcquisitionPollingInterval"": ""00:00:05"",
  ""ListenerLockRecoveryPollingInterval"": ""00:01:00""
}"
5/24/2024, 9:20:02.550 AM	"ScaleOptions
{
  ""ScaleMetricsMaxAge"": ""00:02:00"",
  ""ScaleMetricsSampleInterval"": ""00:00:10"",
  ""MetricsPurgeEnabled"": true,
  ""IsTargetScalingEnabled"": true,
  ""IsRuntimeScalingEnabled"": false
}"
5/24/2024, 9:20:02.551 AM	Starting JobHost
5/24/2024, 9:20:02.552 AM	Loading functions metadata
5/24/2024, 9:20:02.552 AM	Starting Host (HostId=049749cd-d7f8-4817-a36f-6d3713a6, InstanceId=99e0e332-9338-414b-9ec7-37cb3a2be210, Version=<IP_ADDRESS>, ProcessId=60, AppDomainId=1, InDebugMode=False, InDiagnosticMode=False, FunctionsExtensionVersion=~4)
5/24/2024, 9:20:02.553 AM	1 functions found (Custom)
5/24/2024, 9:20:02.553 AM	Reading functions metadata (Custom)
5/24/2024, 9:20:02.554 AM	Generating 0 job function(s)
5/24/2024, 9:20:02.554 AM	0 functions loaded
5/24/2024, 9:20:02.557 AM	No job functions found. Try making your job classes and methods public. If you're using binding extensions (e.g. Azure Storage, ServiceBus, Timers, etc.) make sure you've called the registration method for the extension(s) in your startup code (e.g. builder.AddAzureStorage(), builder.AddServiceBus(), builder.AddTimers(), etc.).
5/24/2024, 9:20:02.558 AM	"HttpOptions
{
  ""DynamicThrottlesEnabled"": false,
  ""EnableChunkedRequestBinding"": false,
  ""MaxConcurrentRequests"": -1,
  ""MaxOutstandingRequests"": -1,
  ""RoutePrefix"": ""api""
}"
5/24/2024, 9:20:02.559 AM	Host initialized (7ms)
5/24/2024, 9:20:02.559 AM	"Initializing function HTTP routes
No HTTP routes mapped"
5/24/2024, 9:20:02.560 AM	Job host started
5/24/2024, 9:20:02.560 AM	Host started (7ms)
5/24/2024, 9:20:07.531 AM	Host lock lease acquired by instance ID '000000000000000000000000ED651336'.

To Reproduce
Steps to reproduce the behavior:

Deploy a SWA with a Python 3.10 streaming function. I used the below snippets (lightly modified from the MS announcement post) to reproduce the issue.

function_app.py
import time
import json
import azure.functions as func
from azurefunctions.extensions.http.fastapi import Request, StreamingResponse

app = func.FunctionApp(http_auth_level=func.AuthLevel.ANONYMOUS)

def generate_count():
    """Generate a stream of chronological numbers."""
    count = 0
    while count < 100:
        yield f'data: {json.dumps({"chat": count })}\n\n'
        count += 1
    yield f'data: {json.dumps({"type": "stream-end"})}\n\n'

@app.route(route="stream-chat-query", methods=[func.HttpMethod.GET])
async def stream_chat_query(req: Request) -> StreamingResponse:
    """Endpoint to stream of chronological numbers."""
    return StreamingResponse(generate_count(), media_type="text/event-stream")

requirements.txt
azure-functions
azurefunctions-extensions-http-fastapi

host.json
{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true
      }
    }
  },
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle",
    "version": "[4.0.0, 5.0.0)"
  }
}

staticwebapp.config.json
{
  "routes": [
    {
      "route": "/login",
      "rewrite": "/.auth/login/aad"
    },
    {
      "route": "/.auth/login/aad",
      "allowedRoles": [
        "anonymous"
      ]
    },
    {
      "route": "/*",
      "allowedRoles": [
        "authenticated"
      ]
    }
  ],
  "responseOverrides": {
    "401": {
      "statusCode": 302,
      "redirect": "/login"
    }
  },
  "navigationFallback": {
    "rewrite": "index.html",
    "exclude": [
      "*.{png,jpg,gif,svg}",
      "*.css"
    ]
  },
  "auth": {
    "identityProviders": {
      "azureActiveDirectory": {
        "registration": {
          "openIdIssuer": "https://login.microsoftonline.com/######################/v2.0",
          "clientIdSettingName": "ENTRA_CLIENT_ID",
          "clientSecretSettingName": "ENTRA_CLIENT_SECRET"
        }
      }
    }
  },
  "platform": {
    "apiRuntime": "python:3.10"
  }
}

environment variables
[
  {
    "name": "PYTHON_ENABLE_INIT_INDEXING",
    "value": "1"
  },
  {
    "name": "PYTHON_ISOLATE_WORKER_DEPENDENCIES",
    "value": "1"
  }
]

Trigger the function via front end, if successful wait for the functions to de-allocate and attempt again.

Expected behavior
Managed python functions with steaming should load consistently, similar to self-managed consumption functions.
Additional context

Issue was experienced on a standard SWA plan deployed to East Asia with distributed functions disabled.
Occasionally during a successful startup http 500 errors were returned to the client until the functions had fully initialized.

No longer able to reproduce this issue - no code changes.


Usage of facade aliases causes exceptions when aliases are forbidden in project.

Describe the bug
In blade templates you use aliases of facades like {{  Auth::check() }} that cause exceptions like Class "Auth" not found when project discourages usage of aliases.
To Reproduce
Steps to reproduce the behavior:

In config/app.php remove everything from aliases: 'aliases' => []
Open /admin
Get exception Class "Auth" not found

Expected behavior
No exception.
Additional context
In most cases aliases can be replaced by app(class)  or fully qualified name of the facade. This way platform will be more independent from the project's configs and restrictions.

Hi @swayok
Facades, such as Auth, are an important part of the Laravel framework, and it is recommended to include them to ensure a consistent user experience and guarantee functionality.
If you unintentionally removed these facades and are experiencing their absence, it is recommended to check your project's configuration file to ensure it aligns with the framework's recommendations. You can review the configuration file at this link: link to configuration file. It is recommended to keep the facades enabled.
However, if you deliberately removed the facade registration in accordance with your organization's policies or personal preferences, you can dynamically register the facades, for example, within a middleware, to make them work only in your Orchid application.
The current use of facades does not pose any problems for me or for the majority of users.
However, abandoning the use of facades would impose limitations on my role as a maintainer. Are there any significant reasons to refrain from using facades in this package? This will help me better understand the context and make an informed decision.

HI. I did not mean to remove usage of facedes. The problem is usage of aliases of facades that Laravel declares in config/app.php -> aliases. This is literally a magic flavored with magic which is very bad from the design point of view. The less magic you have in project - the more it is maintainable and compatible with other projects. In the case of a library it is very important to use less magic so the library is compatible with more projects. Most people do not remove aliases and use them but it is better to use facades directly, avoiding aliases.
I've forked a platform and managed to run it without facade aliases - all you need to change is replace \Auth:: by auth()-> helper (it was actually designed for use in templates and you can see this in Laravel docs). Laravel won't remove this helper because it is in core, so it is safe to use it instead of app('auth')-> which would be the the most direct option.
Also I've seen a problem with arguments typization. For example: you have Orchid\Access\Impersonation->loginAs(User $user) instead of Orchid\Access\Impersonation->loginAs(Autheticatable $user). The main point here is usage of the most abstract entity (class/interface) so that developer can pass any instance of class that implements interface or extends base class. I don't like mixing users and admins in same table (separation of concerns is very important here) so, I needed to pass Admin model but method does not allow this.


The code doesn't build and run.

What's going on?  If you could please fix the missing dependencies, that would be great!  Thanks in advance!

There are missing frameworks: SAPCommon, SAPFiori, SAPFioriFlows, SAPFoundation, SAPOData.


bolt publish: warn No unpublished packages to publish (It does not publish packages)

When i run bolt publish, bolt produce following output (It does not publish packages):
warn No unpublished packages to publish
🏁   Done in 0.04s.

My packages are in packages located which is in package.json workspaces defined!
bold init and bolt install worked without any issues!

package.json:
{
  "name": "app-packages",
  "version": "0.1.0",
  "main": "index.js",
  "private": true,
  "workspaces": [
    "packages/*"
  ]
}

packages folder contains:
packages/a/packages.json
packages/a/index.js

packages/b/packages.json
packages/b/index.js

My mistake! The issue was in root package.json located.
wrong:
  ...
  "workspaces": [
    "packages/*"
  ],
  ...

correct:
  ...
  "bolt": {
    "workspaces": ["packages/*"]
  },
  ...

It would be nice if bolt generates the workspace options!


Docs are missing instructions for implementing fix for lints

Help Request

TSLint version: 5.4.3:
Typescript version: 2.4.0:
Using: VSCode

Test.ts.lint
// simple call
console.clear( );
              ~ [0]

[0]: No space within parentheses

Test.ts.fix
// simple call
console.clear();

with tslint.json configuration:
{
    "rules": {
        "space-within-parens": [true, 0]
    }
}

Expected behavior
I cannot figure out how to write fixes for my lints. I already implemented the rule and it works but when I run fix that is corresponding with the output, I always get below message and I couldn't find any docs to understand what's the problem!
Expected (from .fix file)
Actual (from TSLint)
// simple call
console.clear();

Fix implementation
let lintMsg: string;
let lintFix: Lint.Replacement;
if (this.options.size === 0) {
  lintMsg = Rule.FAILURE_NO_SPACE;
  lintFix = Lint.Replacement.deleteText(position, length);
}
this.addFailureAt(position, length, lintMsg, lintFix);

Add a line break to your .fix file and it will work
The second line in your .lint file results in an empty line in the .fix output

Wonderful!

How can I PR this new rule?
What I already did:

Fork tslint
Added new rule
Compile and tests are working

We're missing this in results, an indicator may worth thousands...

I thought about that, too. I don't know if only empty lines should be handles specially or all lines...

How can I PR this new rule?

Add it to src/config/latest.ts and src/config/all.ts
Log into https://circleci.com/ and enable test for your fork. Also set the concurrency to 4, otherwise CI will fail.
(In case you haven't done this before) Commit and push your rule to a new branch and visit https://github.com/palantir/tslint. Github will automatically suggest a PR from that branch.

Where is this concurrency settings?
It already fail without my commit as you said!

https://circleci.com/gh/aminpaks/tslint/edit#parallel-builds

Tests on my local pass, but they failed with CI!
Do you have access to see the logs in my branch or not?

CI tests with different versions of typescript. That may cause failures
even if tests pass locally.
I'll look into that tomorrow.
You can still open a PR though, so I can also give you feedback on the
implementation.
Am 26.06.2017 22:18 schrieb "Amin Pakseresht"<EMAIL_ADDRESS>
Tests on my local pass, but they failed with CI!
Do you have access to see the logs in my branch
https://github.com/aminpaks/tslint/tree/space-within-parens or not?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/palantir/tslint/issues/2956#issuecomment-311169848,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ALaeKJifD-vfWpi6ORSN9Zz1Hb0nw6gNks5sIBH3gaJpZM4OFr6l
.

Great, thanks.


Handle invalid setting of random subset size in random forest

The parameter can be set via the method get_num_random_features or a couple of the constructors. This parameter is a member of RandomCARTree.
Currently, if the parameter is larger than number of features, a non-informative shogun::ShogunException is thrown. To reproduce, for instance call rand_forest.set_num_random_features in multiclass_randomforest_modular.py.
The idea is to handle incorrect settings of this parameter and abort training/testing when appropriate.
Note that RandomCARTree::set_feature_subset_size already makes sure that the number is positive. However, it cannot check that feature subset size is smaller than or equal to the number of features since this depends on the data at hand (and it can change in the life-time of a RandomCARTree instance).

Hey @iglesias , I will take this.
One question.
The number of features while inside set_num_random_feature can only be known if the data was locked right?

Hey @kislayabhi. That seems to reconcile with the last paragraph in the first comment, correct? What do you think?

Ah. I see. I will add a check in CRandomForest::train_machine after the data is confirmed to exist.


iOS interface orientation obsolete

On iOS the UIApplication.shared.statusBarOrientation is deprecated and on newer versions obsolete. It has been replaced by code suggested here:
https://askcodes.net/coding/-statusbarorientation--was-deprecated-in-ios-13-0-when-attempting-to-get-app-orientation
https://github.com/capacitor-community/barcode-scanner/issues/129

Thanks a lot for this! I was already looking into it but I did not have much time and was somehow to stupid to find a solution right away!
I will merge it and make a few tests next week, once I am back from vacation :)

Nice, enjoy your vacation!

@sjonkeesse Thanks a lot for your help, I will make a few tests and create a release once this is done :)


some screenshots are missing

Hi,
thanks for the good docs.
Some screenshots are missing, making it a bit harder to go through them
https://github.com/Microsoft/BotFramework-Emulator/wiki/Getting-Started#connect-to-a-bot-hosted-remotely
https://github.com/Microsoft/BotFramework-Emulator/wiki/Tunneling-(ngrok)

Thank you for taking the time to report this. We're revamping our docs at the moment. This will be fixed in the new pages.


⚠ Samsung has degraded performance

In e09ed1b, Samsung (https://samsung.com) experienced degraded performance:

HTTP code: 200
Response time: 2486 ms

Resolved: Samsung performance has improved in 6de735b.


chore: bump version of CFinalCommitment

To reflect the change in the RPC output (e.g. protx diff) between versions 0.15 and 0.16 introduced in this PR
https://github.com/dashpay/dash/commit/ae152991174b9578c4ca4553fc17dad0c653b9e0
it would be nice to bump the version here as well.

Thank you both for the explanation! Kind of thought that much. We will handle the differences on our side. Closing this.


Change log

Current coverage is 73.19%

Merging #217 into master will not affect coverage as of 57eb723

@@            master    #217   diff @@
======================================
  Files           12      12
  Stmts         1108    1108
  Branches         0       0
  Methods
======================================
  Hit            811     811
  Partial          0       0
  Missed         297     297

Review entire Coverage Diff as of 57eb723

Powered by Codecov. Updated on successful CI builds.


DCOS-50715: add manual disabling of add* calculations

Testing

Check out the branch
Add console.log calls to the CompositeState add* methods to see in the browser console what happens
Change export of composite state so you can control it in the browser console:

- module.exports = new CompositeState({ frameworks: [], slaves: [] });
+ const state = new CompositeState({ frameworks: [], slaves: [] });
+ module.exports = state
+ window.compositeState = state;

Run window.compositeState.enable() and window.compositeState.disable() in the browser console until you are convinced it works

Trade-offs

Choose against EventEmitter, as it seemed harder to implement with an event emitter than with a simple reference counter.

Dependencies

Screenshots

@jaxens yes, that's the plan

:tada: This PR is included in version 2.71.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


my statement with a comma-separated list of initializations generates bad code

my statement with a comma-separated list of initializations generates bad code.  For example:
my $l2ccifname="", $l2vccid="", $l2des="" ;

Note: Only the first one is actually declared my, the rest are global variables.
Fixed in v0.012


Reply does not format text as a quote

Hi,
I love your plugin, but there is one big issue that I have.
I have installed 2.2.1 version.
When I click reply button:
https://imgur.com/L14EAMU
in composer text is not marked as a quote
https://imgur.com/RQFXDtd
should be of course like here:
https://imgur.com/SeHTynY
thanks!

v2.2.5, thanks!


Warning: React does not recognize the _customComponent prop on a DOM element.

    Warning: React does not recognize the `_customComponent` prop on a DOM element. If you intentionally want it to appear in the DOM as a custom attribute, spell it as lowercase `_customcomponent` instead. If you accidentally passed it from a parent component, remove it from the DOM element.

env:
"@emotion/react": "11.10.4",
"@emotion/styled": "11.10.4",
"@react-page/editor": "^5.1.5",
"react": "17.0.2",
"react-dom": "17.0.2",
Originally posted by @jink-e in https://github.com/react-page/react-page/issues/1187#issuecomment-1299374948
reproduce
const TestPlugin = {
  Renderer: (props) =>
hello
,
  id: 'test-plugin',
  title: 'title',
  description: 'description',
  version: 1,
  controls: {
    type: 'autoform',
    schema: {
      required: ['backgroundColor'],
      properties: {
        backgroundColor: {
          type: 'string'},
      },
    },
  },
};

:tada: This issue has been resolved in version 5.2.0 :tada:
The release is available on:

v5.2.0
GitHub release

Your semantic-release bot :package::rocket:


vscode: New window, command palette, editor split

Further voice commands, for vscode under windows

As discussed, in code review, will be best with all vscode refactor introduced by bba1b56156eb264477ef73344751f91804f38957 to close this PR and resubmit on the new structure after with necessary changes discussed here


New extrapolation modes for iris.analysis.interpolate.linear()

Add two new extrapolation modes to iris.analysis.interpolate.linear:

"nearest": Just duplicate the nearest defined value.
"missing": Mask out any areas which would require extrapolation.

The function iris.analysis.interpolate.linear is deprecated. Its replacement iris.analysis.Linear supports masking extrapolated values, and the iris.analysis.Nearest object provides nearest neighbour interpolation.


Sampled TraceId produces recorded spans

What happened
We added sampling to our application to reduce the total amount of spans ingested. We use head based sampling and make the decision on the producer side. We use the new useProducerSpanAsConsumerParent flag which means that we'd expect that the sample decision propagates down to the consumer spans. In our case, we still see consumer spans in our observability tool, even though the TraceFlag is set to 00. We validate the latter using the traceparent on the job opts.
What we expect to happen
When the TraceFlags on the producerContext are set to 00 we expect the same thing on the consumer, i.e. the trace should be excluded from recording, if the producerContext is to be used.
Solution approach
@unflxw I think the root cause might be that we still use the consumerContext as active here: https://github.com/appsignal/opentelemetry-instrumentation-bullmq/blob/main/src/instrumentation.ts#L511. Perhaps we should use the parentContext variable in this row as well?

Hi @Steffen911, thanks for reporting this issue!
Yes, I think you're right that we should use parentContext in that line. (Could you send a PR about it? 🙏)
However, I'm not sure if that will solve the problem you're encountering. In that line, we create a context for the newly created span. But said span was created using trace.startSpan(..., parentContext). If the trace flags were being honored, shouldn't that span be created as a NonRecordingSpan? 🤔
Do give it a try! If it solves the problem, I'm happy to merge it.

Hey @unflxw,
I'll open the PR for the parentContext, because I think it would be the correct setup anyway. It doesn't seem to fix the issue though based on my local experiments. It seems that the TraceFlags aren't interpreted when creating the span in https://github.com/appsignal/opentelemetry-instrumentation-bullmq/blob/main/src/instrumentation.ts#L474 as the resulting span has a _spanContext.traceFlags = 1 and isRecording() === true.
Do you have any other ideas what it could be?

I added https://github.com/appsignal/opentelemetry-instrumentation-bullmq/pull/14, but it doesn't seem to address this issue.

@Steffen911 Do you have any other ideas what it could be?

I think the default sampling behavior is to sample all traces, which is what you're seeing, regardless of the trace flags. I think you may need to configure OpenTelemetry to use the ParentBasedSampler. Likely in the way that is described in their documentation for the TraceIDRatioBasedSampler, but for the ParentBasedSampler instead.

@unflxw Thank you so much! That was actually the perfect hint. We used a TraceIDRatioBasedSampler in all of our services which overwrote the ParentBasedSampler (which seems to be the default). So not using the TraceIDRatioBasedSampler fixed it for us.


can' run

maybe after update the code,you don't run the script again, so many bug here,run command such as
python3 ./havoc_profile_generator.py  -c ./chrome.json -q > ./havoc_chrome.yaotl  ,it can't run, I try to fix it,but another bug has appeared

The thing is, it's Python. It's an unfinished tool and between my job and my family life I don't really have all the time in the world to dedicate to active development of just one tool that was created because a user on C5piders discord cried about not having a profile generator I made something janky in about five hours.
What would help you and everyone else is a little bit of effort from you to describe what the "bugs" are, what the output is, and maybe even a PR or two.
Thanks

So instead of helping diagnose the issues you decided to do the good old complain then give up. It's python, it's a scripting language. It took me all of ten minutes to find all of the issues thus far that were just issues that were due to the changes to the code base that are literally easily solved because each exception gives a line number with the issue.
If you were more helpful in solving the problems instead of just whining that problems existed maybe you would have been more of a help to the community in general.