Call of Duty: Black Ops poor performance

When playing the original Call of Duty: Black Ops, the performance will be extremely poor, almost "slow-motion" like with occasional stuttering. Happens in both Singleplayer/zombies and multiplayer. Disabling both PROTON_NO_ESYNC and PROTON_NO_FSYNC doubles the framerate and reduces the issues above, but it's clearly not running how it should.
Software information
Call of Duty: Black Ops(42700). Low or high settings, don't matter.
System information

GPU: NVIDIA GTX 1080
Driver: 11.510.68.02. Happens in previous driver releases.
Wine/DXVK version: whatever is included in Proton GE 7.16. Happens in previous Wine/DXVK versions.
OS: Arch.

Does it run better with WineD3D? I'm not sure if this is a DXVK issue rather than a Wine one.
Please upload an apitrace so I can take a quick look.

Uploading but it seems to be pretty big at 1.7GB. Is that normal?
I made it via disabling DXVK in the config file and used Nvidia's FPS/rendering overlay from nvidia-settings to confirm I was running WineD3D. I then used Protontricks to override the DLLs. Seems to have worked but let me know if it isn't ideal.

Yes, 2GB is a perfectly normal size for an apitrace. You can usually get it down quite a bit by compressing it as a zip/7z/tar.xz.

Alright, done. Should be here:
https://drive.google.com/file/d/1UjqlCEWUmGU-_whGES5H_BoDvv7QSf8k/view?usp=sharing

Was the Apitrace any good? Can anyone reproduce the performance issues?

I haven't looked into it yet.

You deleted the apitrace.

Still available if you aren't logged into Google. I don't have a lot of space left so if no one wants to look into it then I'll just delete it. Not complaining, just saying I don't have much space.
I'll re-upload as compressed.

Still available if you aren't logged into Google

The site says you moved it into the bin.

Don't know, I was able to download it again while not logged in.
Here is the compressed version:
https://drive.google.com/file/d/1LyWuBtJRXdo8NWAYLZTShCeWb6-d5rJU/view?usp=sharing

The new link is not public. I can't access it.

Yeah forgot to change it. Fixed.

That trace quits the game around 2 seconds after loading the level. And in those two seconds there's nothing obviously wrong.
I don't think I'll be able to do anything here without having access to the game and even then, chances are, the game just pushes a lot of draw calls. CoD games famously never really drop in price on Steam for some reason, so not a lot I can do for you here.
I guess you could try creating a dxvk config file (see README.md) and setting d3d9.apitraceMode = True.

Also, just as a sanity check, do you have a iGPU in your setup?
How is GPU utilization when you launch with DXVK_HUD=full %command% in steam?

That trace quits the game around 2 seconds after loading the level. And in those two seconds there's nothing obviously wrong. I don't think I'll be able to do anything here without having access to the game and even then, chances are, the game just pushes a lot of draw calls. CoD games famously never really drop in price on Steam for some reason, so not a lot I can do for you here.
I guess you could try creating a dxvk config file (see README.md) and setting d3d9.apitraceMode = True.

Alright, spent more time in-game this time with that flag set. It's around 8 GB uncompressed so hopefully it provides better info.

Also, just as a sanity check, do you have a iGPU in your setup? How is GPU utilization when you launch with DXVK_HUD=full %command% in steam?

Not an iGPU.

Can you post a ingame screenshot with the full hud enabled.

So, does apitraceMode help or not? And make sure you remove the apitrace dll before you try.

Are you sure this is better and Windows and not just a problem with the game itself.
Draw calls jump between 2000 which is pretty normal and 10,000 which is a lot for a d3d9 game.
You also never answered my question about whether d3d9.apitraceMode = True impacts performance.

It is worse on Linux. Windows does not have this performance problem.
d3d9.apitraceMode = True helps with performance when making a trace, yes. Still runs terribly.

No.

Don't know what to tell you. I use Gnome X11. Maybe this is only an issue with Pascal and older.
Even on Proton GE 7.30 and the newest drivers this is still an issue for me.

Don't know what to tell you. I use Gnome X11. Maybe this is only an issue with Pascal and older.
Even on Proton GE 7.30 and the newest drivers this is still an issue for me.

I use KDE Wayland. I don't know if there is any difference.
I played the first 2 single player mission without any problem.
Maybe as you said this is only an issue with Pascal and older.

Is it in general or specific maps or effects?
I haven't compared to windows yet. Will do that in a moment.

I haven't really played much but i tried comparing the same scene on windows with and without dxvk.
native

dxvk

Dxvk actually gives me a nice boost. The performance dip i get on linux seems to be wine or something else

Maybe it's a CPU issue? Are there any known performance issues with first gen Ryzen?
I also get performance issues in Borderlands 2 when enabling PhysX(low -> high). If Black Ops uses PhysX maybe that's to blame?

Maybe it's a CPU issue? Are there any known performance issues with first gen Ryzen?

Pretty much every performance problem with D3D9 games these days is on the CPU side of things. GPUs are orders of magnitudes faster these days than when those games were released.
@Blisto91 Has tried that level you picked for your apitrace on Windows with DXVK and on Proton and it runs very well on Windows and terribly on Proton. That means we're likely looking at a Wine problem here.

@BlueGoliath okay you are right. There are big issues with this game on linux in some places. But it' something else besides dxvk.
Here is windows with dxvk vs proton on linux. wined3d on linux shows similar
Windows:

Linux proton:

I dunno if the game uses physx. I tried to install newer physx into prefix as a test. But didn't do anything.

I'm pretty sure it doesn't use PhysX.

It seems to be an issue with the CFS kernel scheduler and possibly the game's DRM as switching to a Project C kernel scheduler solves the issue entirely (PDS/BMQ).
I haven't been able to get Bgamer working on linux to fully test the theory though. (Bgamer is an alt-client for offline/lan co-op that disables the DRM)
I have tested this and reproduced it on multiple kernel versions, GPU driver versions, and DXVK versions over the past few months.
Sys Info

CPU: 5950x
GPU: 1080-ti
Driver: 525.60.11
OS: Artix
Kernel: 6.1.1 compiled using the Linux-TKG scripts (both screenshots use the exact same config options, only difference is the kernel scheduler)
Proton: Proton-GE 7-42 (I have had the same results with more versions, 7-42 was used for the screenshots)

The 14 FPS one is CFS, the one that is CPU bound at 139 FPS was with PDS, BMQ gives the same result as PDS.
I think I tested BORE on accident and it gives the same result as CFS but don't quote me on it.

Ignore the round, it's a strategy testing mod I use to disable zombie spawns for consistent FPS testing
I think that's every important detail to it? If not let me know if I missed anything.


useSignTypedData not opening dialog in Android Metamask 7.1.0

Is there an existing issue for this?

[X] I have searched the existing issues

Package Version
1.3.7 (also 0.10.4)
Current Behavior
I have a button on my website that is hooked up to useSignTypedData. On desktop, clicking on it pops up a signature request modal in the metamask extension, but on Android nothing happens. I tried migrating from wagmi 0.10.4 to 1.3.7 to see if that would help, but the behavior is the same. The error message in the metamask app is provided chainId “421613” must match the active chainId “4331027". However, I triple checked and my active chain id in the app is 421613 and I have never seen that other chainId. I get the same type of error when trying Arbitrum mainnet
Expected Behavior
I'd expect that a signature request dialog would open on Android as well.
Steps To Reproduce
Try using useSignTypedData with Metamask 7.1.0 on Android.
Link to Minimal Reproducible Example (StackBlitz, CodeSandbox, GitHub repo etc.)
https://stackblitz.com/edit/new-wagmi-crm7l5?file=src%2Fcomponents%2FNetworkSwitcher.tsx
Anything else?
No response

Sorry, finally found the root cause on metamask's github: https://github.com/MetaMask/metamask-mobile/issues/6710


[Bug] During benchmark/profile_serving.py, occur unexpexted end word 1, when ignore_eos is true.

Checklist

[X] 1. I have searched related issues but cannot get the expected help.
[X] 2. The bug has not been fixed in the latest version.

Describe the bug

the output should not be blank
Reproduction
start serving
base /mnt/models-new/puyu-XX/service_docker_up.sh
start benchmark
python benchmark/profile_serving.py X.X.X.187:33337 /puyu-XX/triton_models/tokenizer/tokenizer.model ../res.json
the issue also canbe reproduced in chat command line (provided by AllentDan)

ps: the issue is logged to record and check after it's fixed.
Error traceback
No response

bos_id and eos_id are wrong when converting the model to turbomind model
Please manually change them to 1 and 2 respectively in triton_models/weights/config.ini


Question: Why return  null instead of undefined for invalid enum lookups?

I just got tripped up by Enum returning null instead of undefined for missing enum values.
var myEnum = new Enum(['A', 'B']);
myEnum.get('C'); // => null

I would have expected undefined not null, because null is a legitimate value in JavaScript. undefined on the other hand, represents a value that has not been set; which I think more accurately describes the missing enum value.
var x = {a:1};
x.b // => undefined

y // => undefined

null carries the connotation from other languages of being an object reference that happens to currently be empty. Since the value being requested of the enum is non existent, (which is different from being a placeholder for an empty object), I submit that it ought to be returning undefined, instead.
Thoughts? I see that there are tests explicitly testing for null, so I assume there is a particular reason null was chosen over undefined?

I think there is no particular reason... what is your opinion @TooTallNate ?

I'd be ok with changing it. It's a breaking change technically, but I feel like most code would just be checking for truthiness as opposed to null/undefined explicitly, so it's fine IMO.

I would definitely do a major version bump if/when released with this change.

@jasonkarns Would you like to do a pull request?

Sure! Let's see if I can actually get this one submitted before you/others
get to it. ;)
On Thu, Feb 26, 2015 at 3:17 PM, Adriano Raiano<EMAIL_ADDRESS>wrote:

@jasonkarns https://github.com/jasonkarns Would you like to do a pull
request?
—
Reply to this email directly or view it on GitHub
https://github.com/adrai/enum/issues/14#issuecomment-76261347.


[fb-package] Support Wave 11

Update microdata, API, and contingency table pipelines to support new and changed items in Wave 11.
Wave 10 vs 11 diff as of 05/11.

Items that had slightly changed but I thought similar enough to leave as-is:

tested_positive_14d: B10a replaced by B10c; same meaning and logic, different wording
screening_tested_positive_14d: same as tested_positive_14d
tested_14d: B8 was previously used to fill in B10 for better coverage (if respondent never tested, also not tested in last 14d)

@krivard This is ready to deploy.


Build out header component

The header should house main site navigation, which for now will just be the home page, speakers page, events page, and sponsors page.

I can take this

Pull request: https://github.com/sem-js/sem-js/pull/15

we need to build the navigation too?

home
speakers
events
sponsors

Yes, that's taken by someone here: https://github.com/sem-js/sem-js/issues/12
Once that Navigation is built out, the Header should properly import the nav


fb chat hangs on certain messages

1. Severity: medium
2. Reported by: carsoli
3. Description:  when i type in "search xxx" a query is fired and a proper response is received.
however, when i type in "search" or " search '''' " or "services" : chat hangs, seems like it's about to respond but then nothing is received, not even a response "sorry can u say that again".
4. Steps to reproduce the issue: type in any of the above mentioned commands in the fb chat

5. Expected result: proper descriptive response message

"search ''' " should fire a query, like "search xxxx"

This is connected to #249 the error is due to a service name being empty and causes a problem with facebook encoding solving it should solve this too, it's working now though after remove the service with an empty name.


fix kitchen test

What does this PR do?
Workaround the sleep hack in kitchen test
Motivation

AC-761

Additional Notes
I've ran several rounds of kitchen tests and they seem to be working well. Link to pipelines below.

(Datadog internal-only) https://gitlab.ddbuild.io/DataDog/datadog-agent/-/pipelines/3895711
(Datadog internal-only) https://gitlab.ddbuild.io/DataDog/datadog-agent/-/pipelines/3907347

Some tests may have failed but are unrelated to the kitchen tests.
Describe your test plan

LGTM as a workaround, but would there be any way to move this logic to the Agent itself? Right now, any user trying to do something when the Agent starts (like we do for kitchen tests) needs to mimic this logic in their code.

@albertvaka At a high level I think there are 2 ways to signal to the user or system that the Agent is actually ready:

through the service manager/init system: in this case the Agent service wouldn't be marked as running by the service manager until it's actually ready:

on Linux this could be possible when systemd is used, by using Type=notify (see systemd docs) and making the Agent notify systemd when it's "ready". This doesn't exist with upstart though. With sysvinit it could be implemented manually in the init scripts I guess if we wanted it.
on Windows the agent would only signal to the SCM that its service is running once it's "ready"
on containerized environments, the readiness probe fulfills this purpose.

with an agent command: I don't think an agent command could be much smarter/useful than "running agent status and checking whether it's successful" (basic check that agent is running) or the existing agent health command (thorough check that agent components are running, closer to liveness check on containerized envs).

We could explore doing 1. for more systems (systemd and Windows), in which case we'd want to define what the "ready" state should actually guarantee on these systems, but I don't see a strong use case today. Our kitchen tests need to cover scenarios where the Agent is completely broken, but most users could rely on the return code of agent status or the output of agent health depending on the use case in their tests/automation.
WDYT?

I agree that doing only systemd and Windows would be enough. Given both platforms provide a way for services to signal they are ready, IMO we should be "good citizens" on those platforms by doing that. I agree with you that the use cases are rare so probably it's not a top priority, but on the other hand we have a use case ourselves, and any time we spend coding workarounds could be spent adding the feature.

I agree with the general sentiment, but I think this is a case where the internal workaround is orders of magnitude simpler than defining and implementing the "correct" fix to cover systemd and Windows. Adding a card in backlog for this (see AC-822 internally), not sure if this should be owned by the platform or core team 🤔


RUMM-1869: Support encryption for local data storage

What does this PR do?
This change add support for the local data encryption (RUM, Logs, Traces, etc.) - it gives user a possibility to define their own encryption.
Encryption implemented as wrapped around FileHandler to have minimal change layout. Being a wrapper with current architecture means we are going to encrypt per event basis - file will have multiple encrypted events separated by plain-text separator.
The logic is the following: give user bytes to encrypt, encode result in Base64 format (so that separator doesn't clash with data), write it. Decryption takes the same logic backwards.
Implementation makes the following assumptions:

Separator is needed to decrypt the data, because we read full file and events need to be decrypted individually.
The same separator should be used for a single file - not an issue, because we control that.
Separator cannot be in Base64 characters set (strictly speaking it shouldn't contain only Base64 characters, having some is fine) - this is ok, because we control the separator.

Note: changes in DatadogNdkCrashHandler may look dirty - that is because NDK handling will be completed in another PR (created a task for that, this change is already quite big).
Review checklist (to be filled by reviewers)

[ ] Feature or bugfix MUST have appropriate tests (unit, integration, e2e)
[ ] Make sure you discussed the feature or bugfix with the maintaining team in an Issue
[ ] Make sure each commit and the PR mention the Issue number (cf the CONTRIBUTING doc)

Codecov Report

Merging #826 (d0ae136) into feature/standards-compliance (d179fec) will increase coverage by 0.13%.
The diff coverage is 90.17%.

@@                       Coverage Diff                        @@
##           feature/standards-compliance     #826      +/-   ##
================================================================
+ Coverage                         80.06%   80.19%   +0.13%
================================================================
  Files                               238      240       +2
  Lines                              8171     8320     +149
  Branches                           1421     1455      +34
================================================================
+ Hits                               6542     6672     +130
- Misses                             1287     1296       +9
- Partials                            342      352      +10

Impacted Files
Coverage Δ

...tadog/android/core/configuration/SecurityConfig.kt
66.67% <66.67%> (ø)

...android/rum/internal/ndk/DatadogNdkCrashHandler.kt
85.39% <68.42%> (-4.18%)
:arrow_down:

...atadog/android/core/configuration/Configuration.kt
95.59% <85.71%> (+0.05%)
:arrow_up:

.../internal/persistence/file/EncryptedFileHandler.kt
91.09% <91.09%> (ø)

...n/com/datadog/android/core/internal/CoreFeature.kt
93.58% <100.00%> (+0.09%)
:arrow_up:

...in/com/datadog/android/core/internal/SdkFeature.kt
100.00% <100.00%> (ø)

...g/android/core/internal/data/upload/DataFlusher.kt
100.00% <100.00%> (ø)

.../android/core/internal/persistence/file/FileExt.kt
93.33% <100.00%> (+0.74%)
:arrow_up:

...rnal/persistence/file/batch/BatchFileDataReader.kt
100.00% <100.00%> (ø)

...nternal/persistence/file/batch/BatchFileHandler.kt
72.86% <100.00%> (+1.22%)
:arrow_up:

... and 14 more

@mariusc83 @xgouchet I pushed a commit with integration test for encryption, can you please review it as well?


Long return statement needs two rustfmt runs to reach final format

Given the following code (which is a very stripped down example of something more sane):
fn main() {
    {
        {
            {
                return Err(ErrorKind::ManagementInterfaceError("Server exited unexpectedly").into())
            }
        }
    }
}

When I format it once I get (just added ; at the end):
fn main() {
    {
        {
            {
                return Err(ErrorKind::ManagementInterfaceError("Server exited unexpectedly").into());
            }
        }
    }
}

And If I run rustfmt a second time on that I end up with:
fn main() {
    {
        {
            {
                return Err(
                    ErrorKind::ManagementInterfaceError("Server exited unexpectedly").into(),
                );
            }
        }
    }
}

This must be a bug I believe. We should always end up with the final format on one run? I have tried this, and get the same result, with both 1.0.0-nightly and by building the latest master branch in this repo (rustfmt 1.0.0-nightly (43206f41 2018-11-30)).

I can see how this could happen. The line splitting mechanism doesn't see that a semicolon will get added and thinks it can still fit the expression on one line. Could probably be solved by reordering those two formatting operations (semicolon add first, linebreak decision after).

It feels logical to check if a line is too long or not after the line has been edited to it's final content indeed.


Crash on drawing pattern

As soon as I start drawing a pattern using a staff the game crashes saying:
io.github.fablabsmc.fablabs.api.fiber.v1.exception.FiberConversionException: Invalid serialized value 0
This was running on Minecraft 1.18.2 with Fabric 0.15.6
My mods:

hexcasting-fabric-1.18.2-0.9.6
fabric-api-0.77.0+1.18.2
cardinal-components-api-4.2.0
cloth-config-6.5.116-fabric
fabric-language-kotlin-1.10.17+kotlin.1.9.22
Patchouli-1.18.2-71.1-FABRIC
paucal-fabric-1.18.2-0.4.7

crash log <---------
idk, I downloaded the newest versions of everything and removed all other mods

I found out that with a fresh .minecraft folder this doesn't happen
Eitherway, if someone knows why is the error poping out it would help me to fix my original .minecraft folder

I figured it out, it was because the file .minecraft\config\hexcasting-client.json5 had a field called "gridSnapThreshold" that was being initialized to 0 (zero), setting it to 1 solved the problem
I tried deleting it to let it re generate so it would choose valid values, but it gets generated as zero
That's it, please check why is it setting that value

I figured it out, it was because the file .minecraft\config\hexcasting-client.json5 had a field called "gridSnapThreshold" that was being initialized to 0 (zero), setting it to 1 solved the problem
I tried deleting it to let it re generate so it would choose valid values, but it gets generated as zero
That's it, please check why is it setting that value


API Credentials loaded through console does not match credential name in manifest

Expected Behaviour
The API credentials loaded into .env should match the expected value in the manifest so that the user does not have to manually update this.
Actual Behaviour
To take AEP API as an example, the credentials loaded into .env looks like this
AIO_$ims_Project__xxxxxx_client__id=xxxxx
AIO_$ims_Project__xxxxxx_client__secret=xxxxx
AIO_$ims_Project__xxxxxx_techacct=axxxxx
AIO_$ims_Project__xxxxxx_meta__scopes=["ent_dataservices_sdk"]
AIO_$ims_Project__xxxxxx_ims__org__id=xxxxx@AdobeOrg

while the manifest expects
      customer-profile:
        function: actions/customer-profile/index.js
        web: 'yes'
        runtime: 'nodejs:10'
        inputs:
          LOG_LEVEL: debug
          **tenant: $CUSTOMER_PROFILE_TENANT
          apiKey: $CUSTOMER_PROFILE_API_KEY**
        annotations:
          require-adobe-auth: true
          final: true

Steps to Reproduce

create project in console with AEP api subscription
load adobe i/o cli and do aio app init
follow the generator to select the project you've created and select to create a sample action for AEP
wait for project to init then check .env and .aio

Please filter the variables. Ideally, .env should contain only what is needed (Runtime credentials, API Keys, tenant Ids)
The tenant Id cannot be retrieved in an automated manner. So please the variable value as a placeholder for the developer to fill. We'll document it.
Uppercase everything to keep consistency in the output
Make sure that the .env variable names match what we expect in the action definition in the app manifest.yml


Fixed double parsing of Candy-generated messages as XHTML

parseAndCropXHTML() currently parses already parsed XHTML messages and this causes an error.

Hope this can resolve candy-chat/candy/#446

Ooops, merged this to dev. Cherry-picked to master at https://github.com/candy-chat/candy/commit/53b0cbbe27409650483674b98250ce5b9a793a11

sorry uh i was afk for the past few days


⚠ API - Lens has degraded performance

In 6516bb8, API - Lens ($LENS_API_URL) experienced degraded performance:

HTTP code: 503
Response time: 323 ms

Resolved: API - Lens performance has improved in 7df97da after 6 minutes.


CIF-1416 - Add CIF Core Components to AEM Components Library Page

fix issues for deployment on AEM as a Cloud Service

Description
This fixes some remaining issues when deploying the components to AEMaaCS:

a transitive dependency for graphql-java is no longer exported in AEMaaCS
the GraphQL endpoint must be configured with an environment variable

How Has This Been Tested?
Tested on AEMaaCS with SNAPSHOT dependencies for the examples library.
Types of changes

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[ ] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes and the overall coverage did not decrease.
[x] All unit tests pass on CircleCi.
[x] I ran all tests locally and they pass.

@mhaack To verify, install the examples library on AEM Cloud SDK and check that the bundle starts (it doesn't start without that fix). You can also test the CIF_MOCK_GRAPHQL_ENDPOINT endpoint variable.


Terraform modules fetched from private repositories

Some Terraform modules are referring to private repositories

In prod-env/prod-env/microservice-certificate-evaluator.tf
source                 =  git@github.com:ukncsc/MailCheck.CertificateEvaluator//infrastructure/modules/certificate-evaluator-microservice?ref=8131b8a"

In prod-env/prod-env/microservice-reverse-dns.tf
source                 = "git@github.com:ukncsc/MailCheck.ReverseDns//infrastructure/modules/reverse-dns-microservice?ref=14682ec"

In prod-env/prod-env/microservice-dkim.tf
source                 = "git@github.com:ukncsc/MailCheck.Dkim//infrastructure/modules/dkim-microservice?ref=56c2f76"

Build fails because of this

Mentioned modules are still in private repositories. Can you make them public or fix it another way, because all this project is impossible to use while some functionality is in prvate modules. Thanks

We acknowledge this as an issue and are working towards a solution fairly soon.


PSUseDeclaredVarsMoreThanAssignment not correctly handling array adds

Given the following code
$msg = @()
@("a", "b") | ForEach-Object { $msg += $_ }
Write-Information $msg -InformationAction Continue

I get the following warning:

The variable 'msg' is assigned but never used. (line 2)

I realize that this generates a new array each time, but it is both being assigned to and read, so this appears to be a false positive.
Another similar scenario:
$params = (@{"a" = 1; "b" = 2}).GetEnumerator() |
    ForEach-Object { $m = @{} } { $m[$_.Name] = $_.Value } { $m } # foreach begin{} process{} end{}
$params

The variable 'm' is assigned but never used. (line 2)

bump
Is this fixed already? I still see these false positives.
PS>gmo PSScriptAnalyzer

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Script     1.15.0     PSScriptAnalyzer                    {Get-ScriptAnalyzerRule, Invoke-Formatter, Invoke-ScriptAn...

PS>Invoke-ScriptAnalyzer  -ScriptDefinition {  $jobs=@()
>>                     $ipList | ForEach-Object {
>>                         $running = @(Get-Job | Where-Object { $_.State -eq 'Running' })
>>                         if ($running.Count -ge 10)
>>                         {
>>                             $running | Wait-Job -Any | Out-Null
>>                         }
>>                         Write-Verbose "Discovering ip $_"
>>                         $jobs += Start-Job -ScriptBlock $cmd -ArgumentList $_, $credential, $deepDiscover
>>                     }
>>                     Wait-Job -Job $jobs | Out-Null
>>                     Receive-Job -Job $jobs
>>                 }.ToString()

RuleName                            Severity     ScriptName Line  Message
--------                            --------     ---------- ----  -------
PSUseDeclaredVarsMoreThanAssignment Warning                 9     The variable 'jobs' is assigned but never used.
s

It also happens if you define a variable in the begin block of the ForEach, like this:
$Doubles = 1..100 | ForEach { $collect = @() } { $Collect += $_ * 2 } { $Collect }

@Jaykul  Actually, it is a problem of both the += operator being treated as assignment (not usage) and ForEach-Object, I will therefore extract this case because I found a solution to the originally raised issue that is due to +=


feat: add a different synchronization approach

Previously, the library attempted to synchronize access to the storage across browsers and tabs using a global lock initiated by the _useSession function. Because some recursive calls (i.e. _useSession called within _useSession) were likely, the concept of a stack guard was implemented to detect such calls. This prevented deadlocks with recursion. However, stack guards appear to be quite flaky depending on the environment in which the library runs (not supported in WebKit based platforms) or transpilation/compilation/minifaction toolchains.
This new approach removes the stack guard concept, and attempts to solve synchronization "externally" from the GoTrueClient. This is done like so:

GoTrueClient no longer deals with acquiring the lock. All methods assume that when they're executing, they have been globally synchronized and there is no other competing client.
The lock is acquired only when certain methods like getSession, getUser are called from outside of the gotrue-js module. It is implemented by exporting a wrapped GoTrueClient with a Proxy that detects those methods and acquires the lock before calling into them. These methods are annotated with @synchronized.
Finally, initialization is also handled at the proxy level by acquiring the lock just before the constructed client is returned. The synchronized methods will wait for the initialization to finish before acquiring the lock and calling into the GoTrueClient code.

Closing in favor of #757.


x/tools/gopls: support using modules in go.work that are outside the workspace directory

Right now there is a fair bit of logic in gopls that relies on having a workspace directory that is a parent of all active modules (for e.g. checking workspace containment).
This is an umbrella issue tracking support for go.work files that use modules in arbitrary directories.  We have some related issues (e.g. #48929), but no overarching issue for this feature.

I believe this should have been fixed by https://go.dev/cl/400822, but we need more testing.

Verified gopls recognizes GOWORK=/tmp/go.work. However, changes to the file content (e.g. add/remove modules to the workspace defined by this file) are not yet recognized - gopls is watching only changes in files in the workspace currently.

Thanks, filed https://go.dev/issue/53631 for that. I'll close this issue.


For discussion: flipflop as a feature flag tool

Context
This is a basic implementation of the Flipflop gem, which we could use as a Feature Flag tool.
This is for discussion and further work is required for actual implementation.
Advantages

The gem is updated regularly, actively maintained
Very easy to get started and create features
Very little for developers to maintain
If we don't want to use the UI at all, we can use rake tasks
Custom Strategies available -- ie, we could make features available to specific user groups. See the Flipflop documentation.

Disadvantages

UI is not in keeping with the rest of the application (no branding, cannot guarantee accessibility standards) -- not sure this is much of an issue though as it will only be used by members of the product team, mostly developers.
The other services appear to have home-rolled Feature Flags, so it is possible that users may have different expectations in terms of UI. Again, I'm not sure this is massively important given our user cohort. Also, we could override the default UI if we find it's a problem.

Guidance to review

Review the documentation and advantages / disadvantages to form an opinion about whether or not this would be a good tool to use.
I've used Redis as a strategy rather than Active Record / Database as that seems to be the strategy used in other Feature Flags around DfE. But if people feel strongly in another direction, it would be good to hear about it.

Link to Trello card
Feature Flag Investigation
Things to check

[NA] If the code removes any existing feature flags, a data migration has also been added to delete the entry from the database
[x] This code does not rely on migrations in the same Pull Request
[x] If this code includes a migration adding or changing columns, it also backfills existing records for consistency
[x] If this code adds a column to the DB, decide whether it needs to be in analytics yml file or analytics blocklist
[NA] API release notes have been updated if necessary
[NA] If it adds a significant user-facing change, is it documented in the CHANGELOG?
[NA] Required environment variables have been updated or added to the Azure KeyVault

Screenshots
https://github.com/DFE-Digital/itt-mentor-services/assets/44073106/e6c9a7cf-50fa-46f4-9a40-bf8123515190

This looks good, nice work.
I don't have a lot of opinions on this. The only questions I have are:
Do you know why there's a preference for Redis over the database? Feels much easier to interact with if it's in the DB. Probably because I'm not an expert in Redis.
Can we change the feature flag in the rails console?

I have the same comments as Ollie. The tool looks great! To avoid data loss, let's use Postgres for now.
We'll need to monitor the database performance once this goes live though, as we may be querying multiple flags per page render.

 Feature Flag investigation

@elceebee let's not be judgmental, this is probably WAY better than a custom made tool that i know nothing about ;). Still having different way of managing an app in production can add overhead for the team doing it. I am unsure if we will be in charge of turning these feature flags on and off.

If we are not I think the ultimate decision should go with the team managing them.
If we are let's document this(even if it's trivial tool) so the next people looking at the project can get up to speed quickly without killing themselves.

On the use of Redis
Redis is an CP type database and a key value in MEMORY data store. Almost none of these attributes are valuable for feature flags. We want CA on hard drive. The only fact that at scale, if everyone at dfe uses it we might have less than a thousand feature flags, postgres seems like the go to answer.


Add Group Norm support for Pruning model

Description
Add Group Norm support for model pruning.
I am not sure if this algorithm works for GroupNorm
--> Need to do experiments to recheck the algorithm.
There are two main ways to prune GroupNorm (one is pruning group (reduce the number of groups, keep the number of channels per group the same, finally the module will become LayerNorm), the other is pruning the channel per group (finally the module will become InstanceNorm).
This implementation is the second approach as I saw that for Conv2d, we keep the number of groups the same.
But personally, I prefer the first approach as LayerNorm is more widely accepted and outperforms InstanceNorm according to GroupNorm original paper.
p.s: Lacking the infrastructure to do these test :(
Test Options

[ ] fast test
[ ] full test - HPO
[ ] full test - NAS
[ ] full test - compression

Checklist

[ ] test case
[ ] doc

How to test
from nni.compression.pytorch.pruning import FPGMPruner
from nni.compression.pytorch import ModelSpeedup
import torch
from torch import nn

class GroupNormModel(nn.Module):
    def __init__(self):
        super().__init__()
        self.conv1 = nn.Conv2d(3, 128, 3)
        self.norm = nn.GroupNorm(32, 128)
        # self.norm = nn.BatchNorm2d(128)
        self.conv2 = nn.Conv2d(128, 128, 3, groups=32)

    def forward(self, x):
        x = self.conv1(x)
        x = self.norm(x)
        x = self.conv2(x)
        return x

config_list = [
    {
        'sparsity': 0.3,
        'op_types': ['Conv2d'],
    }
]

input_shape = (1, 3, 224, 224)
speed_up_config = dict(
    mode="dependency_aware",
    dummy_input=torch.rand(input_shape, device="cuda")
)
model = GroupNormModel().cuda().eval()
print("Before speed up")
print(model(speed_up_config["dummy_input"]).shape)
print(model)
print("---")

pruner = FPGMPruner(
    model,
    config_list,
    **speed_up_config,
)

masked_model, masks = pruner.compress()
pruner.show_pruned_weights()
pruner._unwrap_model()
ModelSpeedup(model, dummy_input=torch.rand(input_shape, device="cuda"), masks_file=masks).speedup_model()

print("After speed up")
print(model)
print(model(speed_up_config["dummy_input"]).shape)

@cin-xing Thanks for your contribution!
"There are two main ways to prune GroupNorm (one is pruning group (reduce the number of groups, keep the number of channels per group the same, finally the module will become LayerNorm), the other is pruning the channel per group (finally the module will become InstanceNorm)."
Totally agree, these two ways are all important, can you consider implement them both?
FYI, the following is group conv replacement logic.
https://github.com/microsoft/nni/blob/cbc6273ae8de00a2c3e900987c7a42978d33ed11/nni/compression/pytorch/speedup/compress_modules.py#L434

Hi @J-shang
I have implemented both types of pruning GroupNorm: Constant number of groups and constant number of channels per group.
The implementation is still very rough, so I would love to have your opinions.

For more information, I found that the two achieve similar accuracies for my internal model.
My setting is to use FGBM Pruning with sparsity 20% and 30%. Then fine-tune the model after pruning (already replaced layers) for 3 epochs.
I ran the experiment twice with the two stated settings above. The InstanceNorm only gets slightly higher accuracy (around 0.01%).

Hi @J-shang I have implemented both types of pruning GroupNorm: Constant number of groups and constant number of channels per group. The implementation is still very rough, so I would love to have your opinions.
For more information, I found that the two achieve similar accuracies for my internal model. My setting is to use FGBM Pruning with sparsity 20% and 30%. Then fine-tune the model after pruning (already replaced layers) for 3 epochs. I ran the experiment twice with the two stated settings above. The InstanceNorm only gets slightly higher accuracy (around 0.01%).

I think we should consider merging the two-kind replacement, here is an example:
GroupNorm(num_groups=4, num_channels=12) with masks [0,0,1,1, | 1, 1, 0, 0, | 0, 0, 0, 0]
==>
GroupNorm(num_groups=2 num_channels=4)

Just want to add this image here. A small problem with the original computation of Conv2d with Group.
It is much better to use PyTorch support directly.
Full benchmark code:
# code block1
import torch
tensor = torch.arange(512)

# code block2
remained_in = tensor
in_start = 0
in_end = 32

#code block3
%timeit torch.logical_and(in_start <= remained_in, remained_in < in_end).sum().item()

# code block 4
%timeit list(filter(lambda x: in_start <= x and x < in_end, remained_in.tolist()))

LGTM, could merge this pr after fix the comments

/azp run full test - compression

@J-shang could you help me merge this?
I don't have permission to merge this.


Add new Style/IndetHeredoc cop

This cop checks the following code.
# bad
s = <<-END
This is a text.
This is a text.
END

# good
s = <<-END.strip_indent
  This is a text.
  This is a text.
END

# It is not bad, because the indentation may be intended.
s = <<-END
      This is a text.
      This is a text.
END

# It is bad, because if `<<~` is used, the indentation is not included to a string.
s = <<~END
      This is a text.
      This is a text.
END

Before submitting the PR make sure the following are checked:

[x] Wrote good commit messages.
[ ] Commit message starts with [Fix #issue-number] (if the related issue exists).
[x] Used the same coding conventions as the rest of the project.
[x] Feature branch is up-to-date with master (if not - rebase it).
[x] Squashed related commits together.
[x] Added tests.
[x] Added an entry to the Changelog if the new code introduces user-observable changes. See changelog entry format.
[x] All tests are passing.
[x] The new code doesn't generate RuboCop offenses.
[x] The PR relates to only one subject with a clear title
and description in grammatically correct, complete sentences.
[x] Updated cop documentation with rake generate_cops_documentation (required only when you've added a new cop or changed the configuration/documentation of an existing cop).

Great addition! 👍
One of those days I should continue with all my ideas for powerpack as well. :D

Great addition. I left some (late) comments in the PR.

@deivid-rodriguez Thanks for your comment! I'll create a new PR 👍


whisper-auto-resize: make raw_input py3 compatible

Backwards compatible input. Not usable at the moment as it includes the carbon module which isn't py3 compatible yet.

Coverage remained the same at 88.3% when pulling abf87f5b65eb86deb0e466c1bf0bcd634244d939 on piotr1212:py3_compat into 0d7f483f016d0a8327630751d8837f711df870a0 on graphite-project:master.


⚠ Senior School Website has degraded performance

In 59c3244, Senior School Website (https://www.cranleigh.org) experienced degraded performance:

HTTP code: 200
Response time: 18965 ms

Resolved: Senior School Website performance has improved in f23dab2.


TP: When adding a capability to a server or delivery service, filter out the capabilities it already has from list

I'm submitting a ...

improvement request (usability, performance, tech debt, etc.)

Traffic Control components affected ...

Traffic Portal

Current behavior:
When adding a server capability to a server or adding a required capability to a delivery service, the dropdown list includes capabilities that have already been added to the server/delivery service.
New behavior:
The dropdown list should filter out capabilities that have already been added to the server/delivery service.
Minimal reproduction of the problem with instructions:
In Traffic Portal, go to a delivery service > More > Manage required server capabilities > + > Select... and observe that the dropdown list will contain capabilities that the delivery service already has. Note: this same process can be followed for servers, except it's "Manage Capabilities" instead of "Manager required server capabilities".

@rawlinp  I like to try this. Will do the setup, reproduce and add here if any more info needed


fix typo in q.q

probably having a "scap" primitive would not make a very good impression in the finance world ;P (http://www.urbandictionary.com/define.php?term=scap)
thanks for your very nice atom package!
ciao,
matteo

Thanks, sorry for the delay.


OmniSharp Crash on windows because of incorrect paths

Experimenting with OmniSharp for sublime 3 on Windows 10. After startup, if I open any C# file, the sublime plugin tries to start OmniSharp and this results in the following crash.

Events viewer indicates that there is an
Exception Info: System.IO.FileNotFoundException
Stack:
   at OmniSharp.Program.StartServer(System.String, System.String, Int32, OmniSharp.Verbosity, System.String, Int32)
   at OmniSharp.Program.Main(System.String[])

Looking at the console in sublime I see the following command is being executed. Note the double quotes "" after the -s parameter.
"C:/Users/Rik/AppData/Roaming/Sublime Text 3/Packages/OmniSharp/PrebuiltOmniSharpServer/omnisharp.cmd" -s ""C:\Users\Rik\Documents\Visual Studio 2015\Projects\WebApplication1\WebApplication1.sln"" -p 40765 -config "C:\Users\Rik\AppData\Roaming\Sublime Text 3\Packages\OmniSharp\PrebuiltOmniSharpServer\config.json" --hostPID 6380

Running the command results in the following error message. Could not find file 'C:\Users\Rik\Documents\Visual'.

The culprit is the following line that I can fix this on my own computer by removing the double quotes concatenation, but I'm unsure if this will continue to work on other machines as I am not a python programmer.
Kind Regards,
Rik

Merged PR


Is this normal ?

Hello there
Is this normal because it takes a very long time?
FTL could not create runner file dosn't exist how ifix this if he bug

same error here
tried to fix it . i think it something with make dir cmds


testnet shutdown time

For weekly/semi-weekly cadence it would very nice to be able to set a 'shutdown timer'.
This could be a config variable set like the genesis timestamp.
Eg this weeks testnet ends on 9/10/19 at 2pm.
It would be great to have the daemon stop and shut itself down when this time passes.
equally If you were past this time stamp, the daemon should give an error message and not start if you try to boot it up.
This would keep people from accidentally running old code (happens a bit) and close out old testnets fairly gracefully.

We'll need scheduled time bombs for planned hard forks anyway, so this
feature can be the start of that.
On Tue, Sep 10, 2019 at 1:34 PM Joel Krauska<EMAIL_ADDRESS>wrote:

For weekly/semi-weekly cadence it would very nice to be able to set a
'shutdown timer'.
This could be a config variable set like the genesis timestamp.
Eg this weeks testnet ends on 9/10/19 at 2pm.
It would be great to have the daemon stop and shut itself down when this
time passes.
equally If you were past this time stamp, the daemon should give an error
message and not start if you try to boot it up.
This would keep people from accidentally running old code (happens a bit)
and close out old testnets fairly gracefully.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/CodaProtocol/coda/issues/3398?email_source=notifications&email_token=AAAPATK4V2BL7642DZPICYDQJAAHHA5CNFSM4IVMISRKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HKRRUJA,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAAPATIDY6FX4N2GJQAUMGLQJAAHHANCNFSM4IVMISRA
.


Unable to fetch feature toggles DOMException: signal is aborted without reason

Describe the bug
Hello there,
I keep on getting the following error in the browser:

Has anyone else experienced this?
Do you know how I can fix it?
Using version: ^4.1.1 in the package.json
Steps to reproduce the bug
No response
Expected behavior
No response
Logs, error output, etc.
No response
Screenshots
No response
Additional context
No response
Unleash version
^4.1.1
Subscription type
None
Hosting type
None
SDK information (language and version)
No response

I am using @unleash/proxy-client-react - not - unleash-proxy-client-js


Switch cmd parser to latest minimist

This pull request just swaps the command line parser to the latest version of minimist, which removes a couple of "regressions" (like the changed description of version and the changed position of the help option), but mainly both (1) removes the minimist security notice and (2) keeps the 4.x on the same Node.js version support plan.
I hope this pull request can be considered.

Travis CI status did not update on the pull request, but here is a link to the passing Travis CI build: https://travis-ci.org/github/wycats/handlebars.js/builds/670392714

Will take a look ASAP

Happy to take this out for a spin :)

This also fixes #1673

Just to let you know, I am looking to merge and release this.  I would prefer to do the node changes separately as a revert though.
I then plan to revert this change on the master branch because (as you said on twitter) the yargs changes are slightly more maintainable long term.
This would leave us with #1673 on master, but I've found a fix for that.

I've pushed the change to split out the node changes to the PR which also has the side effect of getting the travis build to show here properly.


will not accept comma in cart

Hi
I have several thousand products in my database and many of them are above £1000, resulting in a comma, ie £1,999.99.
When this is passed to minicart, it displays NaN and will not process forward.  Any amount under £1000, and therefore not using a comma goes through perfectly and I can checkout as expected.
How can I force the minicart to accept the comma?  I know paypal understands them as I'm using the exact same code as on my test site that does not have minicart installed and amounts over £1000 go through successfully.
Can anyone help?

Add in a quick jQuery replace function to strip the commas before passing to cart
var noCommas = $('.money').text().replace(/,/g, '');

perfect!  thanks very much :)


Contour does not correctly/consistently processes updates to services weights

It's possible to reference a single Service multiple times in a single IngressRoute, each with a different LoadBalancer Strategy, HealthCheck, or Weight.  Similarly, multiple IngressRoutes can reference a single Service with differing strategy, healthcheck, or weight.
The result is appears to be non-deterministic -- often times the resulting Envoy configuration for a any given route is 0% weight, or disabling the health check, depending on which Service reference was used to compute the CDS cluster from the DAG.
The Contour team has discussed three courses of action for this situation:

Mark all IngressRoutes that use a Service multiple times as Invalid (and update the status field)
Create a CDS cluster for every Service that's used in an ingressroute, thus resulting in always accurate route configuration, but duplicate CDS clusters
Create a CDS cluster for each unique Service that uses in an ingressroute.

From a end-user PoV, the current behavior and option (1) provide a terrible user experience.  Re-using a Service multiple times seems to be a common scenario, and sending traffic to /dev/null is not good.
As for (2) or (3), I think either option works for end-users.
One thing to keep in mind, is that the cluster-name field is used in the Gimbal metrics/monitoring system.  Currently the name is ${namespace}/${servicename}/${port}. I think we would want to append or prepend the name of the IngressRoute and/or Path referencing this Service, and be sure to update our metrics regex.

@davecheney PTAL for your thoughts before vacation.  @stevesloka has offered to dig into the issue, but I think he wanted to hear your thoughts on (2) vs (3) and/or other ideas.

I won't be able to work on this for a few days, but I wanted to write down my thinking on how to approach this issue, both for my recollection, and anyone else who is watching this issue.
Currently ingressroute objects specify things like health checks, load balancer config, timeouts, etc on the spec.path key. So those attributes are properties of the route to a service, not the service itself. However on Envoy's side, those same properties are configured on the Cluster object in CDS--that is to say, they are properties of the Cluster (the k8s service) not the route to the service.
This bug arises from two conditions; on in dag.Builder.Compute the other in the way the link between RDS, CDS and EDS entries are done via string matching.
dag.Builder.Compute
The first issue is during dag.Builder.Compute we build sets of Service objects (which will be translated into Envoy Clusters 1:1 by contour.ClusterVisitor) using their name, namespace and port as the identifying tuple. Because load balancer, timeout, health check, etc are not part of this key during computation of a DAG its ambiguous if a route is being connected to a new service object, or an existing one, so the health check, et al, properties which are translated from the ingressroute route object to the dag.Service object may overwrite existing settings. See Issue #503 for a discussion that those properties probably belong on the Service object.
The net result is during processing if you have two routes which mention the same service name/namespace/port tuple with different health check params, etc, the results are undefined and will likely nutate between all states in rapid secession.
The solution to this problem I believe is to recognise that a service named by routes with different hc/timeout/etc params is actually a different service--we need to extend the definition of equality beyond hc/timeout/etc params. This is logically straight forward to do, but leads to two issues described in the next section
RDS, CDS and EDS entry string matching
The linkage between RDS, CDS and EDS is stringly typed. RDS mentions by name a CDS cluster, and CDS mentions by service name and EDS entry containing its endpoints. Some of this names are controlled by us, others are generated blindly.
Specifically the CDS name we provide RDS is a 60 character string, this must identify to RDS the cluster we mean. We currently use the format namespace/name/port and truncate, git short hash style.
The linkage between CDS and EDS is done in the blind, the EDS grpc service derives the name of EDS clusters from the Endpoint document, and only has access to the namespace, name, and port (named or unnamed) of the service. There is no restriction for the length of this string, so we use the namespace/name/port convention without truncation. This name is supplied to CDS using the eds_config.service_name field which allows us to provide an alternative name for the EDS members of a cluster -- they don't have to match the truncated 60 char name of the CDS clusters.
With this said the information about the hc/timeout/etc states needs to be encoded into the name of a CDS cluster -- different clusters (see the definition of equality above) require different CDS entries. Inside the dag.Builder the definition of equality will always include the full set of heath check/timeout/lb details, but how we choose to represent it in the Clusters' name is up to us.
This representation should be stable; so that rules out names like namespace/name/port/sequence as the sequence number order is undefined and will cause a lot of churn on the Envoy side as the entire CDS configuration shifts on each update -- it will also be hard to write reliable test fixtures if the sequence numbers are not predictable ahead of time.
Instead we could include all the parameters we want in the name namespace/name/port/lbstrategy/hcparam1/hcparam2/etc. This has some problems due to the 60 char limitation, even cherry picking the parameters we want to identify the difference between related services we're doing to eat up our 60char budget and either be unable to represent the name uniquely, or the name will be so mangled there is no value in trying to keep it human readable over simply using a hash.
The third option, one that I am proposing is something like namespace/name/port/hash where hash is a hash (probably sha1) of the full set of hc/lbstrat/timeout/params encoded as a string. This gives us a fighting chance of having readable service names where the operator can tell where two clusters are related, but differ in connection type parameters, e.g.default/httpbin/8080/e6d3f7ganddefault/httpbin/8080/7e339a2b`
Important This only applies to the Cluster.Name and RDS.Cluster.Name fields, Cluster.ServiceName is unaffected and will remain namespace/name/port (untruncated) as this is required to match the value that EDS generates in the blind. There are several open questions for investigation to see if Envoy will permit an ClusterLoadAssignemnt entry (from EDS) to be present in multiple clusters, but assuming this is possible, there should be no problem with the same Endpoints (from the k8s endpoints document) being present in several Envoy Clusters representing the same k8s Service with different healthcheck,timeout, and load balancing strategies.
Open questions:

[ ] can an EDS endpoint be part of multiple CDS clusters?
[ ] can we list the same ServiceName in server CDS entries?

Pulling in details from #514 so it can be marked as dup:
Load balancing strategies and health checks should also be allowed to be different.

Moving to 0.6 final

Updated issue description with checklist of remaining end-user changes.


injecting Ember assets into Rails layout causes javascript errors even when Ember app is not loaded

I'm revisiting (see #450) the issue of whether to inject the Ember app's assets into a Rails layout because there is a lot functionality in my layout in Rails that I actually would prefer to avoid rebuilding right now. I have the injection working (the Ember app is injected at the appropriate place in the layout and the Ember app behaves as expected). However, doing this seems to wreak havoc on the javascript plugins that I have included in the Rails app on the Rails only pages, where I wouldn't expect it to occur. Pretty much every plugin is firing this error:
Uncaught TypeError: $(...).[some-JS-plugin-initialization-function] is not a function
Is this common? Something that can be easily fixed?
Which operating system and version is the project developed on?
OS X 10.11.4 (15E65)
Which version of ruby is the project developed on?
2.3.0
Which version of npm is the project developed on?
3.3.12
Which version of ember-cli is the project developed on?
"ember-cli": "2.5.0"
What is the rails version?
Rails 5.0.0.beta4
What is the ember-cli-rails version (from Gemfile)?
ember-cli-rails (0.7.3)
What is the ember-cli-rails-addon version (from package.json)?
"ember-cli-rails-addon": "0.7.0"
Is your application server multi-threaded (such as puma and unicorn) or is
it multi-process (such as thin and webrick)?
Puma Version 3.3.0
What are the contents of config/initializers/ember.rb?
EmberCli.configure do |c|
  c.app :frontend,
  build_timeout: 25
end

What are the contents of the Rails' view that renders the Ember application?
I don't have a view override set up at this time.
How are the EmberCLI-related routes defined?
mount_ember_app :frontend, to: "/frontend"
How is the application deployed?
heroku

This seems to be related to two different jQuery versions loading up. The first one comes from your asset pipeline along with all other 3rd party libraries initialized with it. The second one is from Ember's vendor.js, which obviously does not know about your plugins.
The solution that worked for me was adding something like this to ember-cli-build.js:
/*jshint node:true*/
/* global require, module */
var EmberApp = require('ember-cli/lib/broccoli/ember-app');

module.exports = function(defaults) {
  var app = new EmberApp(defaults, {
    // We use jQuery from asset pipeline in non-test envs
    vendorFiles: EmberApp.env() === 'test' ? {} : { 'jquery.js': false }
  });

  return app.toTree();
};

This basically will not bundle jQuery into Ember app anymore, so there's no second conflicting version. Let me know if that helps

Thanks so much @krasnoukhov, this work like a charm - you were totally right about the conflicting versions of jquery.


Remove unused r_simpleMipmaps cvar

I found this while working on https://github.com/DaemonEngine/Daemon/pull/595 :slightly_smiling_face:

LGTM


HART-IP Device

After initial connection, if you try to send a command 0 to a basic HART-IP device an Unhandled exception is thrown.

@ericrot by "basic HART-IP device" do you mean a native HART-IP device - not an I/O?

@tjohnston-fcg Yes, we have a simulation of a 648 temperature HART-IP device that we can run against our clients to see how they handle a native HART-IP device.

@ericrot The HART-IP Client does not support native HART-IP devices.  should we announce without it?  Could you offer some assistance to improve the client?

@wallyp I certainly will provide assistance to enhance the client. I have several things I would like to add/modify to provide a better HART teaching example.
It is probably Ok to announce without it since native devices don't yet exist. It can be a fast follower.


Set backend for configure

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@a80a418).

Continue to review full report at Codecov.

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


The 'Filter by prefix (case-sensitive)' box is not localized for ADLS Gen2 blob containers/file shares

Storage Explorer Version: 1.29.0-dev
Build Number: 20230219.3
Branch: main
Platform/OS: Windows 10/Linux Ubuntu 22.04/MacOS Ventura 13.2.1 (Apple M1 Pro)
Reproduce Languages: All languages
Architecture: ia32/x64
How Found: From running test case
Regression From: Not a regression
Steps to Reproduce

Launch Storage Explorer -> Open 'Settings' -> 'Application -> Regional Settings'.
Select 'España' -> Restart Storage Explorer.
Expand one ADLS Gen2 storage account -> Blob Containers.
Create a blob container -> Observe the explorer.
Check the 'Filter by prefix (case-sensitive)' box is localized.

Expected Experience
The 'Filter by prefix (case-sensitive)' box is localized.
Actual Experience
The 'Filter by prefix (case-sensitive)' box is not localized.

Additional Context
This issue also reproduces for file shares.

Verified it is localized with most recent build on the main branch.

Verified this issue on the build main/20230301.10. Fixed.


Update instructions for utahid api

This should be merged after the api goes to production.

I'm thinking this can be merged after your review and then we can publish the release after the api goes to production


[release-1.4] istioctl analyze should print on broken files, but try to continue

This is an automated cherry-pick of #18196

@istio-testing: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

unit-tests_istio_release-1.4
27b4297af136987ad4c6eb2580f7fb609b42fe8f
link
/test unit-tests_istio_release-1.4

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/test unit-tests_istio_release-1.4


Enhancement put behind login

Are there any plans to put Tasks.md behind any login system? It would be nice to host securely to the world.

I don't plan to make a whole authorization system for the application because I don't think it should be the app's responsability. You already can do that by using different services like Authelia and Cloudflare Zero Trust.
But I do think it could be integrated with different auth protocols like LDAP, though I still need to research further into this subject on how to do that, how it can be benefitial and if it's worth it doing so.

I had a very good experience with passport.js .
https://www.passportjs.org/packages/passport-oauth2/
What it is missing is a role-based access. So after a login, you could not assign admin or user permissions.

Easily you can add middleware http auth using traefik as reverse proxy
https://doc.traefik.io/traefik/middlewares/http/basicauth/

OIDC support would be awesome.
I use Zitadel for SSO, many other use Keycloak or Authelia. Being able to implement auth and SSO this way would be great!


More prominent use of streaks

Is your feature request related to a problem? Please describe.
I recently found out that free code camp tracks your daily streak. I remember when I used Duolingo the streak always helped to keep me motivated. Similarly, I know a few video games that use streaks as a way to encourage daily use. I wonder if we could make this more prominent to gamify the learning experience a little bit and make consistent learning a bit more emotionally rewarding.
Describe the solution you'd like
Perhaps we can display it with a little notification/annoucement bar that pops out from the top. For example, something like: "Your streak is now 14, that's an all time high!"
Describe alternatives you've considered
Instead of showing up in a notification bar, it could show up in the model that pops up when you complete a challenge. I like this less though.
Additional context
This was initially mentioned in https://github.com/freeCodeCamp/freeCodeCamp/issues/48234
@Sboonny made the following point:

I disagree with the streak in general, as it may incentives campers into taking a certification they don't want or need, to keep the streak going, which is against one of the principles of freeCodeCamp. So maybe we should delete it, or keep it hidden.

I don't think that somebody would put in all the energy to get a new certificate just for the streak, it's not like the streak leads to any material gain it's just a small dopamine boost. In any case, from my limited perspective there are cons to any change like this, but the pros seem to outweigh the cons. The more fun and rewarding the learning experience is more likely uses are to stick with it, I think that counts for a lot.

I'm not big into streaks personally. Days off are good for you.

Let's push it to campers to decide 🤔? We can add a Boolean in the setting page, that campers can change to determine if they want streak to be displayed or not.
If this okay, we can discuss how to display it

I don't think we need an option for campers on this one. I'm not completely against it, but I just don't think it's necessary.
I do like this idea. I would like to see something like, if (streak > 1 && first challenge completed for the day) display streak congratulatory message. I would put it in the completion modal for challenges that have those, and in the "lower jaw" on the new RWD/multifile editor. Probably in place of the existing congratulatory message. It would be subtle, but visible.

Yes – I am in 100% agreement with Tom here. Kind of like when you play a fighting game. It doesn't say "0 hit combo" all the time, it just starts saying "monster combo" "awesome combo" those sorts of things after you successfully string several hits together.

I would put it in the completion modal for challenges that have those, and in the "lower jaw" on the new RWD/multifile editor. Probably in place of the existing congratulatory message. It would be subtle, but visible.

That makes sense. I think it would be cool to put a small cute animation above the text there make things a bit more fun. Kind of like in the spirit of asana's "celebrations". I work with animations frequently at my current job so I could implement it easily. It might sound like a strange idea, so what I propose is that my wife and I (she's training to be a designer) could come up with two designs, one with animations and one without, and then discuss which would be best to proceed.

I guess I can see one of our "toast" messages being good, too. So I dunno, either way would probably be fine to me.

We can also come up with a quick design for this just to compare it to the other options

Regarding options, perhaps users have the option of giving them between 1 and 4 days off per week. So for example if they select 2 days, that means as long as they complete a lesson five days of the week they get to keep the streak.

I think it needs to be days in a row. Miss one day, and the streak is broken. We already calculate this streak - it is displayed on profile pages:

I would use that same calculation. Note that with the complexities of timezones, DST, the viewers location, etc. the streak can sometimes be a little off. I fixed it up a while ago and complaints about it have mostly gone away - but we still see one here and there.

And this is why I don't like streaks. I do 'weekday streaks' because I don't want to burn out. I think if we want to make streaks more important, offering 'mental health friendly streaks' would be really nice.

offering 'mental health friendly streaks' would be really nice

Can you elaborate on what that would look like?

I think it needs to be days in a row. Miss one day, and the streak is broken. We already calculate this streak - it is displayed on profile pages:

I think that both lenient and strict streaks both have merit to them. There's plenty of pros and cons to each option and I think that on the whole those pros and cons mainly balance themselves out. For that reason, if anything maybe we could implement the simple option of just keeping the simple 'strict' streak logic and then collect feedback from users. If they're saying that it's stressful or they would like the option to have a break then we can add options for more lenient streaks. On the whole though, the biggest improvement to me is just making the streak more prominent and celebratory.
Here's an article I read recently about streaks, I'm wonder what people think of it
https://blog.duolingo.com/streak-milestone-design-animation/

the biggest improvement to me is just making the streak more prominent and celebratory.

K, now I'm seeing it - make it more gamified. I still feel like I would prefer to keep the streak as "days in a row" - it just feels inaccurate to me otherwise. Here's some other ideas that could maybe have a similar effect. Messages like "You earned 20 points this week!", and "Congratulations on earning your 1000th point!", and "10 points in 10 minutes, way to go!"
Dynamic congrats messages based on campers accomplishments. We could potentially make others based on where they are in the curriculum. Something like - if they finish the last step before a cert project, "Congratulations on finishing the project. Up next is the Build a Tribute Page project."

I think the 'mental health'/'burnout' friendly version is hard to describe because I haven't seen it.
Personally, I have worked hard to guard days off in my schedule. It was a hard skill to learn. Streak counting sorta fights this, so people who want days off can't participate.
Some sort of points per week streak tracking could be a later feature maybe but would be a nice way to let people who guard their days off participate.

Messages like "You earned 20 points this week!", and "Congratulations on earning your 1000th point!", and "10 points in 10 minutes, way to go!"

I'm a big fan of points and to me it seems very complementary that streak would be tied in with points. Duolingo does a nice job combining these two. I didn't bring up points because they don't seem to be used much at FreeCodeCamp so it seemed like a lot of change all at once. However, I'm all for adding them in the future, they would be a great change to make as well to increase that dopamine/gamification effect. That's why I see them on a lot of different learning websites. In an ideal world I think it would be like Duolingo where they buy you stuff like cool skins, or a break from your streak, or just other fun stuff.

Dynamic congrats messages based on campers accomplishments. We could potentially make others based on where they are in the curriculum. Something like - if they finish the last step before a cert project, "Congratulations on finishing the project. Up next is the Build a Tribute Page project."

Very much agree. Just thinking out loud here so take this with a grain of salt but perhaps we could also have some sort congratulatory message for when students pass a particularly hard challenge. That way if they passed it without too much issues they'll feel good about themselves, and if they did have issues it'll help read them other imposter syndrome or bad feelings. To me I feel like getting stuck or feeling bad or self-conscious is one of the biggest ways I've seen people quit learning to code.

Some sort of points per week streak tracking could be a later feature maybe but would be a nice way to let people who guard their days off participate.

This is another good option to consider

@moT01 something I'm realizing is that on the new course style the completion model only shows up some of the time. If the streak increasing event happens on the first challenge they complete of the day, then there's a big chance that the model won't show up unless we change things.

A congrats message is still shown though:

I was thinking we would put it there.

Ah ok, understood. Can you help understand in what situations a completion modal shows up in?

Only the new Responsive Web Design steps use that image I shared (not the modal). I believe the completion modal shows up every time you complete any other challenge - including after you complete one of the cert projects in the new RWD.

And to confirm, I imagine that as more courses are converted to the new style they will have the same behavior with the lack modals/completion as the responsive web design course?

Yes, that is the plan @oriooctopus. The new JS stuff in development will all use it. I could mention that that UI is still fairly new and may evolve, but I think the existence of a congrats message will always be there with any of our challenges, no matter the type - so this feature should always have a place.

After seeing how the lessons work without the module showing up every time a student completes a step within a lesson, I think it would be better for the message to show up on a toast component, maybe once a day after the user completes their first lesson of the day. @orioctopus tells me that free code camp already has something like this. Would you mind telling me where to find it or showing me what it looks like?
Thank you!

Hi @laportabellita we don't have toasts, exactly, but we do show messages like this:

The code in question is a little distributed across the codebase, but https://github.com/freeCodeCamp/freeCodeCamp/blob/f48eba3508c1b1f22ce36eb0f60f7660b1f27bee/client/src/components/Flash/index.tsx#L15
is probably a good place to start. Also,
https://github.com/freeCodeCamp/freeCodeCamp/blob/f48eba3508c1b1f22ce36eb0f60f7660b1f27bee/client/src/components/Flash/redux/flash-messages.ts#L1
is where you can find the messages themselves. Finally, the text corresponding to those keys can be found here
https://github.com/freeCodeCamp/freeCodeCamp/blob/f48eba3508c1b1f22ce36eb0f60f7660b1f27bee/client/i18n/locales/english/translations.json#L517
Let me know if you need any more info.

For this design I tried to show the streak in a way that wasn’t too prominent but still noticiable. The notification shows up for a short period of time, and after that it disappears.
I also included a gear icon, which shows the word “settings” on hover, it could also say “turn streak off”, or any other copy you think would work. My idea is that this takes to the settings area of the website, where you can turn off the night mode, and there the option to turn on the streak would show up, I believe this is a good way to give users to option to turn it off if they dislike it.
This is the prototype, you can hover over the gear icon.
Here's the prototype

I also made a version with the green design you guys already have

Looks good @laportabellita 👍 I think I like the yellow better.
At first I was thinking that the message should replace the existing congratulatory messages, but I think this looks pretty good. I don't think we needed an option to turn the messages off at the moment. At most, it shows up once per day. If it expands to include a bunch of different messages that show up more frequently, then maybe we add that.

So I think there are a few questions remaining, @moT01 I'm wondering if you or someone else can advise:

What should the exact wording of the message be?
when should we show the message - I think we should avoid showing it for a one day streak and then show it for every day after that.
it would be nice if for larger milestones like a week or a month we either have a slightly different text or perhaps even a flame animation. @laportabellita experimented a bit with the idea of a small flame animation in the bar but we thought it was a bit too much for the streak message. On second thought though, it might be appropriate for larger milestones. What are your thoughts?
regarding the old course style and not sure what we want to do. We actually had a superior design for the models (until we realized models weren't really used in the new pattern and abandoned it for the toast notification) that would pop up but I don't know if we wanna add inconsistencies for a pattern that's getting deprecated anyways.
You can see the streak in the top left

When the streak would go up there would be a little flame animation

If a user hovered over the streak a little pop-up would appear

We could still do something like this but I think it depends on how quickly we are planning on moving away from all these old courses. We could also try to have the toast pattern work for these old courses but my fear is that the user wouldn't notice it because the model would be on top.

I think the toasts in @laportabellita's mock would work. Like I said - I prefer that yellow.

exact words...

Not sure. But I would try to make it as clear as you can about what they have done.  Maybe, "Congratulations, you have coded 7 days in a row!"

when should we show the message...

I mentioned above that I would show it if (streak > 1 && first challenge completed for the day) - so don't show it if they just have a 1 day streak. Note that this will need to be calculated based on the campers points (progressTimestamps array) and possibly their timezone. That calculation actually probably already exists for use on the heatmap area of the profile.
also
I would show the toast after they click the "Submit and go to next challenge" button since they don't actually get the point for the day until they submit the challenge. So I'm thinking to show it at the start of the next challenge after they click that button.

it would be nice if for larger milestones...

Yes, I think it would be nice to give a bigger message or different text with different milestones. Also, I like the idea I mentioned of having all sorts of these types of messages. e.g. "Congratulations on earning your 1000th point!" and maybe "Only 10 more steps to finish the project". I would try and keep simple to start and just do the streak message for now. We can expand the messages and make them more dynamic later.
One main concern I had with the toasts was that, with our flash messages, users have to click the X to close them. We don't want that extra click if possible (not sure, though) - campers still need to be able to move between challenges without getting distracted too much I think. The toasts go away on their own, as mentioned, so I think they may work - but since I've been the only one to sort or weigh in on the toasts, I would like to hear what maybe @ahmadabdolsaheb @bbsmooth think about them.

Quotes are coming in the lower jaw of the multifile editor and they will most likely replace some or all of the current congratulatory message. https://github.com/freeCodeCamp/freeCodeCamp/pull/46429
Initially we could conditionally replace the quote with progress/streak related messages when applicable and see if there is a positive change in user behaviour. If so, we could iterate further.
Putting donation modals on some meaningful progress/streak milestones have been in my a/b testing backlog for a while. I will be testing them as soon as I get the growthbook ab testing working.
Note: There is a bug in the api that causes inconsistencies in the completed challenges. That has led us to roll back on a few features in the past including showing the number of completed challenges in the navigation. That is why we are limited on ways we could make the streaks more prominent for now.

Regarding toasts, which I'm assuming we mean messages that disappear after a certain amount of time without user intervention, they are inherently inaccessible and fail WCAG SC 2.2.1 unless you implement one of the exceptions in that SC. The general rule of thumb is that you should expect that there will always be some users who will not see the toast. Thus, you should only use them for non-critical information and there should be an alternative method for the user to get the information provided in the toast.
Since we have other options for displaying the streak information, I personally don't think we should use a toast for this.

We do use toasts for other information though, it seems to me like our criteria for using them is when they are not critical, and I wouldn't say that this information is critical. Obviously the ideal is still have everything be 100% accessible, but I'm having a hard time thinking of a good solution that wouldn't bloat the UI from a design perspective

If the streak information is going to continue to be displayed on the Profile page then yes, technically we can probably get away with using a toast here. But if the purpose of this functionality is to get people excited about their streak at the moment it happens, then using a toast is going to leave some people out of that.

To me that seems ok considering it's non essential and I assume the percentage people who won't be able to access it is < 1%. However, I heard through the grapevine that the team had a meeting about streaks as a whole and the feature is no longer something that they want, at least in regards to this expansion. @ahmadabdolsaheb @moT01 is that correct?

We do use toasts for other information...

We don't use toasts anywhere at the moment that I know of (I know I called them toasts earlier, but I think I was wrong). We use flash messages, they stay open and visible until the user closes them. Toasts disappear on their own. I think that's the main accessibility concern with the toasts and why we don't use them.
I don't know if I like the flash messages for these. I feel like campers may get annoyed that they have to close the message between challenges when it pops up and/or it may get them out of the flow of the project. I guess if it's only a max of once per day, it isn't too bad.
Ahmad mentioned that...

Initially we could conditionally replace the quote with progress/streak related messages

I tend to go with what he says. That's how I initially thought we would implement this, but I liked @laportabellita's mocks and thought they would maybe work. There's a few concerns mentioned about the toasts, so I'm thinking that maybe it's best to just replace those existing messages when we want to display something about a streak or anything else.

the team had a meeting about streaks as a whole and the feature is no longer something that they want

I don't recall that specific thing being said in any meetings. I do recall some conversations, perhaps in meetings and/or maybe here on GitHub, about the streaks being inconsistent and sometimes inaccurate due to the complexities of timezones and because we only store a timestamp. We would need to store the timestamp and the timezone with each completed item to make it accurate I believe.
I think the streak aspect of this is a great idea, but I'm not sure it's the most important part of this issue. I think it's more about showing a message that is personal to the campers progress and to keep them motivated. I think there's other ways to do that - I mentioned a few times about other messages we could maybe use. If we decide that our streaks are too inaccurate, we could maybe find something else to display.

Yeah, I think that we could start with those messages. It doesn't really have any drawbacks and I think it would help with motivating people. The question is how will the tests look? Will people notice them? I can ask @laportabellita to try to tackle it from a design perspective if you want

A few updates on the prerequisites;

The progress-bar pr is coming along. It just needs a few reviews.
Then, the quote pr will be merged
We hit the 1M events/day imitation for exporting the google analytics data to BigQuery. I am actively working to resolve that so we could proceed with A/B testing using BigQuery and Growthbook.

We could initially replace the qoute with the progress related celebratory messages and see user's behavioral change.
The only issue is that when I start A/B testing  progress related donation modals, should we still keep the messages around in the lower jaw?

@ahmadabdolsaheb Is this the progress bar pr you're talking  about? https://github.com/freeCodeCamp/freeCodeCamp/pull/49110

Then, the quote pr will be merged
Is there an existing quote PR?

This is the one: https://github.com/freeCodeCamp/freeCodeCamp/pull/46811

We are discussing new features for freeCodeCamp internally which will make streaks more prominent. These changes are part of a bigger sprint - closing as stale. Thanks and happy coding 🎉


swc as a javascript parser

Feature request
Follow up of https://github.com/webpack/webpack/discussions/13408#discussioncomment-760254
I'm author of the swc project and I'm looking for way to improve the performance of webpack.
Parsing something in javascript is a very expensive task, so I think using the parser of swc with libuv worker thread will improve performance a lot. (Also, it does not block js thread, so other codes can run while parsing.)
But currently, webpack does not allow overriding dependency analysis and it seems like I have to reimplement the whole JavascriptPlugin. If there's an easier way to improve performance, it would be great.
I'll create a standalone parser package if required.

What is the expected behavior?
Returning dependency graph from a loader.
What is motivation or use case for adding/changing the behavior?
Huge performance improvements.
How should this be implemented in your opinion?
By returning graph object or list from a loader.
Are you willing to work on this yourself?
Yes.

@kdy1 Let's start, does swc is using estree compatibility tree?
Because I think we can add hook(s) on parser stage so you can change acorn parser on swc. Or you can provide more information? Do you want avoid double parsing right?

Parsing in javascript is slow, and blocks the js thread for a while, so I want to see if it's possible to offload parsing to nodejs thread pool using swc. I think double parsing with swc is not a big problem, as it the not block js thread.
But I'm not sure if it's estree compatible. It can emit the ast of babel, but I'm not sure if the babel ast is estree.

add hook(s) on parser stage so you can change acorn parser on swc.

If this is possible, it would make the job much easier
I was actually considering other things like forking JavascriptPlugin

But I'm not sure if it's estree compatible. It can emit the ast of babel, but I'm not sure if the babel ast is estree.

Should be yes (due https://github.com/estree/estree#estree-steering-committee, but need check), but here other problem webpack understand only stage 4, so if you return new/unknown AST node the result will be unpredictable.

Parsing in javascript is slow, and blocks the js thread for a while, so I want to see if it's possible to offload parsing to nodejs thread pool using swc. I think double parsing with swc is not a big problem, as it the not block js thread.

Can you describe it deeply? Do you want handle js parsring/code generation in multi threading? Maybe you can provide place where you need inject cwd?

here other problem webpack understand only stage 4, so if you return new/unknown AST node the result will be unpredictable.

swc supports stage 3+ and swc has compatibility transforms so it would not be a problem.

Can you describe it deeply? Do you want handle js parsring/code generation in multi threading? Maybe you can provide place where you need inject cwd?

What I want to do is reducing time used by the parser.
Using other threads is a kind of way to achieve it.
And by

I think double parsing with swc is not a big problem, as it the not block js thread.

I mean parsing twice would not affect performance greatly.
Parsing twice, once from the loader and once from the alternative JavascriptPlugin would result in acceptable performance.

What I want to do is reducing time used by the parser.
I mean parsing twice would not affect performance greatly.

But why do not use loader in this case? I'm a little confused, maybe you can show it using pseudo code on JavascriptPlugin?

Oh, you are right.
Loader is not required at all in this case.

@kdy1 still valid?

@alexander-akait Of course, I'd be happy to make it faster.

For at least initial/demonstration purposes, I think tacking on to swc-loader makes sense here (otherwise, we would have to make a bunch of changes to asyncify the parser parsing - not impossible, but isnt necessarily blocking).
Assuming ast's are compatible (which small test indicates they arent, but they may be close)
The simplest way to get this working using swc-loader, IMO:

Modify (either always, or by opt-in) the return type of @swc/core transform[Sync] to include an ast property
Return the parsed AST property as the fourth argument in swc-loader callback { webpackAST: JSON.parse(output.ast)) }
https://github.com/swc-project/swc-loader/blob/da457e55ac9bc8365e434de95d62324a3bf41cd2/src/index.js#L92
Setting this "known" property will allow webpack to skip its built-in acorn parsing, so we are off to the races!

The main incompatible property set that stands out right now, though, is start/end/loc/range properties. I dont see an option to get the exact loc info from swc, and the start/end properties are encapsulated in a seperate span object

@kdy1 lemme know if you need assistance from me, as I am also interested in seeing this happen

Yeah actually I made rust module that can generate acorn AST from source code. I'll check how it performs using swc-loader first. Of course, it has start/end/loc/comments/etc..
We need benchmark, but definitely worth trying.

@kdy1 as @markjm mentioned AST has to have comments embedded in it. Does you parser include comments too?

@mohsen1 The swc codebase has rust code to create babel/acorn ast and of course those have comments stored in the struct.
Additionally, acorn version is designed to work with webpack (because next.js uses webpack)
I'll add a way to get webpack ast from node js. Filed https://github.com/swc-project/swc/issues/3437

I have one question. Should I add the API to @swc/core?
I'm worried about the size.
@swc/core is quite big because it has lots of code and even a wasm runtime.

@kdy1 @swc/core is great place, it already has parseSync, so why not :).
About comments, does it supported or not? I’m confused a bit 🤔 (https://github.com/swc-project/swc/issues/2964#issuecomment-1030633307)

@coderaiser You can don't worry, because if decide to do it (and most likely it will), it will be experiment, so you can report about any problems in swc

It's supported and rust type definitions for acorn/babel AST store comments inline.
But I'm not sure about the binary size and I think I should be careful about adding an API.

@alexander-akait I also waiting for ability to use rust-based solution to produce estree or Babel AST.
I’m working on linter 🐊Putout  that can fix everything it can find and on tool that converts swc AST to Babel and SWC AST has no comments support, I’m also working on tool that converts ESTree to Babel which does it’s job perfectly.
So, thank you, but I cannot not worry  :), since it’s related to software I’m working on.
@kdy1  Here is one of the ways how API can look like:
const {parseSync} = require('@swc/core');
const ast = parseSync(`const hello = 'world'`, {
    type: ‘estree | babel | swc (default)’
});

No need to use any experimental flags, such API is obvious and straight forward, and of course any bug will be reported to swc repo :).
Worry not about bundle size, if it will be less then one that TypeScript has it will be already amazing 😏. But practical usage is more useful then very long term planning.

@coderaiser Yep, it is not hard task, we need add new options to allow setup parser in webpack (and mark it as experimental so we can do breaking changes between versions) and add cross tests to check all our tests (I think we can catch some problems on early stage).
For for your interest we are working on rust based linter solution https://github.com/swc-project/swc/tree/main/crates/swc_ecma_lints, so if you want to be more faster and safely you can help :star:

For for your interest we are working on rust based linter solution https://github.com/swc-project/swc/tree/main/crates/swc_ecma_lints, so if you want to be more faster and safely you can help ⭐.

I am interested. I’m not as good in rust as in JavaScript 😅, but I have two questions:
🤷 Why so much code for such simple task, as warning about DebuggerStatement?
☝49 Lines! Compare it to 7 lines of remove-debugger:
'use strict';

module.exports.report = () => 'Unexpected "debugger" statement';

module.exports.replace = () => ({
    debugger: '',
});

It reminded me the case with hasOwn, when 🐊Putout implementation had 6 lines vs 112 of ESLint 😏. So don’t tell me that this is because of Rust syntax 😸.
🤷 Where is the fix?
Look, I don’t think that program should tell me what to do, what it really should do: is does things 🤖! So ability to fix is mandatory for linter, that’s why 🐊Putout exists.
🎈Anyways…
…Anyways, I have something to suggest you: 🐊PutoutScript: JavaScript with superpowers: identifiers with additional meaning 🎉.
There is already similar concepts like one that rulegourd uses and a lot more.

Just a little question about swc: If I use swc-loader as a babel-loader replacement, what are the trade-offs excluding the compilation speed?


--pool is a required argument to collins-shell ip_address create

Updating this adds --pool=POOL to the help text for collins-shell ip_address create which means it is possible to get an ip_address create right on the first try.  Also accurate help text is useful :)

I tested both with and without a default pool set in the collins config and the ip_address create still failed without a pool.

Thanks for this. I'll dig in more tomorrow morning. However can you provide more description on what the failure was. The create action definitely specifies pool as optional

Every time I try without the pool I get:
```Error processing request: Specified pool is invalid``
If pool is not required I still think --pool=POOL should be listed in the help text in parentheses to indicate that it exists but is optional - I find this confusing every single time I use create (luckily I can usually just use allocate but that's a whole different mess I created for myself :smile:)

I think the reason that I need to specify a pool is because I don't have defaultPoolName set.  So that would explain the error.  Having said that I really think the help text should indicate that --pool is a supported option.

Here is what I found, from a help text stand point
➜  ~  collins-shell ip_address
Tasks:
  collins-shell ip_address allocate POOL --tag=TAG                                                 # allocate addresses for an asset in the specified pool
  collins-shell ip_address assets POOL                                                             # find all assets in a pool
  collins-shell ip_address create --address=ADDRESS --gateway=GATEWAY --netmask=NETMASK --tag=TAG  # create a new IP address (Use allocate, not create)
  collins-shell ip_address delete POOL --tag=TAG                                                   # delete addresses for an asset in the specified pool
  collins-shell ip_address delete_all --tag=TAG                                                    # delete all addresses for an asset
  collins-shell ip_address find ADDRESS                                                            # find asset using specified IP address
  collins-shell ip_address help [COMMAND]                                                          # Describe subcommands or one specific subcommand
  collins-shell ip_address pools                                                                   # find all pools that are in use
  collins-shell ip_address update OLD_ADDRESS --tag=TAG                                            # update the IP info for an asset

➜  ~  collins-shell ip_address help create
Usage:
  collins-shell ip_address create --address=ADDRESS --gateway=GATEWAY --netmask=NETMASK --tag=TAG

Options:
  [--config=CONFIG]      # YAML configuration file
  [--debug]              # Debug output
  [--host=HOST]          # Collins host (e.g. http://host:port)
  [--password=PASSWORD]  # Collins password
  [--quiet]              # Be quiet when appropriate
  [--timeout=N]          # Collins client timeout
                         # Default: 30
  [--username=USERNAME]  # Collins username
  --tag=TAG              # Tag for asset
  --address=ADDRESS      # IP address
  --gateway=GATEWAY      # IP gateway
  --netmask=NETMASK      # IP netmask
  [--pool=POOL]          # Name of pool

create a new IP address (Use allocate, not create)

Pool is included in the help text, only in detailed help since it is optional.
However I'm not satisfied that you concern has been addressed. I read thru the collins code as well but come up empty. Can you provide more of a description a sequence of steps so that I'm sure we are solving what you want addressed?

@maddalab thanks so much for looking into it. I'm guessing my issue is that I must not have properly configured a default vlan when testing this. Let me see if I can reproduce and I will let you know.

@maddalab I think your assessment is correct.  I will close this PR now.


There is no install source for CentOS 7

Expected behavior
Provide a install source for CentOS 7, I also tried to clone the source code and make it, the make process is OK, and I got the procdump file in the "bin" folder, but when I run the procdump, there is no file to create, I only got these on the console window.
root@bogon:/home/code/procdump/ProcDump-for-Linux/bin> ./procdump -p 5063 -n 3 -s 3 -C 80                                                                           18-08-21 11:40
ProcDump v1.0.1 - Sysinternals process dump utility
Copyright (C) 2017 Microsoft Corporation. All rights reserved. Licensed under the MIT license.
Mark Russinovich, Mario Hewardt, John Salem, Javid Habibi
Monitors a process and writes a dump file when the process exceeds the
specified criteria.
Process:		cat (5063)
CPU Threshold:		>=80
Commit Threshold:	n/a
Threshold Seconds:	3
Number of Dumps:	3
Press Ctrl-C to end monitoring without terminating the process.
[11:40:29 - INFO]: CPU:	97%
[11:40:33 - INFO]: CPU:	97%
[11:40:37 - INFO]: CPU:	97%
[09:53:42 - INFO]: Timed:
Actual behavior
Steps to reproduce the behavior

System information (e.g., distro, kernel version, etc.)

Any one can help me?

@xiexin36 I suspect that you may not have installed all the dependencies for Procdump. As per our documentation we depend on gdb for Procdump to work appropriately.
Can you provide the output of yum list installed | grep gdb on your system?

@jahabibi Thank you for your reply, Here is my output
[root@bd0 ~]# yum list installed | grep gdb
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
gdbm.x86_64                           1.10-8.el7                      @anaconda
gdbm-devel.x86_64                     1.10-8.el7                      @base
and I will try to install gdb

@jahabibi After install gdb with " yum install gdb", everything work fine. Thank you.

Not a problem! Glad to hear we were able to resolve this.