Remote sfence vvma -- missing VMID argument

Section 5.3.2 of the Privileged Specification (Version 1.12) notes that the HFENCE.VVMA instruction is only operates on the guest identified by hgatp.VMID. (See also 5.5.3: "the effective ASID can be considered to be the combination of this VMID with the VS-level ASID.").
This is fairly obvious: a TLB holding guest translations needs to match against both the ASID, which is defined by the guest, and the VMID, which is defined by the hypervisor.
Hence,  hagtp.VMID is an implicit operand to the HFENCE.VVMA instruction.
However, the sbi_remote_hfence_vvma_asid and sbi_remote_hfence_vvma functions do not have an argument for the VMID.
I suggest adding the VMID as an additional argument to both functions, in the fifth respectively fourth position  Although this breaks the convention that semantically identical arguments are passed in identical registers, it makes the passthrough from a guest sbi_remote_fence_vma_asid and sbi_remote_fence simpler.  (Or you could add a dummy argument to sbi_remote_hfence_vvma function, which would allow you to keep the VMID argument in the fifth position in both functions.)

Yes, we should add VMID argument to SBI HFENCE.VVMA calls.
In fact, it's not too late since RISC-V H-Extension is not yet frozen and lot of Hypervisors are still in development.
Thanks for catching.
Can you send patch to<EMAIL_ADDRESS>?
Regards,
Anup

I recall now, we don't need the VMID argument because the SBI implementation can pickup-n-save the VMID from HGATP.
I guess we need to clarify the documentation.
Anyway thanks for pointing out.
Regards,
Anup

Does that mean that SBI will be baking in the assumption that VMID means the same thing between different harts?

Which is a correct assumption for now... and hopefully in the long run, too, since ASID/VMID globality adds complexity but seems to have as many downsides as upsides.

Yes, VMID space is global for most open source hypervisors (KVM, Xen, Xvisor).
Regarding SBI HENCE.VVMA call, the semantics are same as local HFENCE.VVMA instruction which means the SBI implementation (i.e. M-mode firmware) should get current VMID from HGATP csr and use this VMID when doing HFENCE.VVMA on multiple HARTs.
The above mentioned SBI HENCE.VVMA call semantics should be documented in SBI spec.
Regards,
Anup

I know on x86, Linux uses a non-global ASID* scheme so it would be good to understand their design and evaluate whether it is something that RISC-V wants to rule out. The idea is to have core keeps a short history of the last 6 processes that ran on it, and for each memory map has a generation number and a bitmap of which cores it is currently installed on. Shootdowns are then only sent to cores which have the same page table active (if any), and otherwise the TLB gets flushed lazily on context switches if the generation number has changed.
Their argument is that translations are unlikely to linger in the TLB beyond a couple of context switches, so you can get almost all the benefit of ASIDs without the complexity and cost of global coordination to centrally manage ASID assignments. (The number of ASIDs is small compared to the possible number of running processes, and not even that much higher than the realistic limits on core count)
If a similar design were used by a hypervisor for VMIDs, then the desired semantics of remote_hfence_vvma would be to do what the documentation currently says: issue a hfence.vvma instruction without messing with hgatp at all.
*Technically x86 calls them PCIDs

I'm firmly in the x86 camp on this one.  (My previous comment suggested otherwise, but that's because I misread a previous post.)  Avoiding global ASIDs/VMIDs at the ISA level saves a bunch of complexity, and sometimes even works out better for performance, since TLB shootdowns can be surgically targeted.
Whether SBI calls treat ASIDs as global is at least somewhat separable from the ISA decision, since OSes can simply choose not to use the SBI calls and use their own IPIs instead.

It's the Hypervisors that treat VMID space as global and not the SBI calls.
The semantics of SBI call are same as HFENCE/SFENCE instruction done on multiple HARTS. The SBI spec does not enforce any semantics on VMID or ASID.
To do remote TLB flushes locally within S-mode software will require dedicated S-mode CLINT OR or RISCV IPI extension for HARTs.
Regards,
Anup

S-mode software can currently use the existing SBI calls for IPIs if it wants to do its own shootdowns.

Yes, SBI software can use SBI IPI calls for local remote TLB shoot down but it is slower than doing remote TLB flushes using SBI RFENCE calls. We have performance numbers to prove this as well.
The reason for better performance of SBI RFENCE is that CLINT IPI interrupt is wired to M-mode. When we do SBI IPI call, the M-mode software on target HART will first take interrupt in M-mode which then injects S-mode IPI. That's why we need a dedicated S-mode CLINT OR RISC-V IPI extension.
Regards,
Anup

The VMID handling in Xvisor RISC-V and KVM RISC-V are totally different.
The KVM RISC-V VMID handling is very similar to Linux x86 ASID handling. We don't have fixed VMID assigned to a Guest/VM but I won't call this approach 100% non-global because VMID allocation is done using a global cyclic counter (which is lockless). Whenever global cyclic VMID counter roll-over, we nuke TLBs of all HARTs and start re-assigning VMIDs again.
The Xvisor RISC-V has very simple approach of assigning fixed VMID to each Guest/VM. The reason for simple approach in XVISOR is that it an embedded hypervisor and it will typically run very few Guests/VM in resource constraint system.
Regards,
Anup

Your description of KVM RISC-V VMID handling still sounds global to me. Linux x86 by contrast can have a given ASID refer to a different process on every core. For instance, the first process that runs on each core is assigned ASID=1, the second is assigned ASID=2, etc. Once the first six have been assigned for a core, it uses an LRU scheme to reuse them. ASIDs 7-4095 are never used (except that if the KPTI Meltdown mitigations are enabled, each process actually gets two ASIDs)

Thanks for the details on x86 approach. I will study this more.
The KVM RISC-V approach of VMID allocation is designed to support large number of Guests/VMs so that we are not restricted by fixed number of VMID bits.
Irrespective to the approach taken for ASID/VMID allocation, we will always need remote TLB flushes because remote TLB flushes are also used when memory is mapped/unmapped for a process/guest/vm which happens at different rate based on workload.
In RISC-V systems, S-mode software doing remote TLB flushes locally makes sense only if S-mode software have way to do IPIs without M-mode software intervention.
Regards,
Anup

Closing this issue. Please reopen if it is not resolved.


[RFC] reduce the number of CI builds

Summary
In order to save time for pull request builds and save travis resources, I suggest to reduce the number of builds on travis and azure.
Detailed Explanation
At this point we have 9 different travis configuration build for each pull request. This appears to me as overkill. We just want to know if there was nothing obviously broken. More thorough testing will occur on the master branch.
Drawbacks, Rationale, and Alternatives
Occasionally a build on master will fail, so this is a drawback, but I think the time / electrical energy saved is worth it.
Unresolved Questions

Which builds to keep, which to delete?
Should we use only azure with macOS/windows/linux builds?

I think that we could definitely limit codecov to a maybe once a week cron job, and that's usually the longest build and the one most prone to failure.

How about moving some of the builds to be allow_failures? I would suggest keeping the following builds as must pass for each PR:

Rust stable - run snippets
Rust stable - cargo test
rustfmt
test WASM

Agreed with @palaviv .
How about rust nightly? Should we stick to that?

See #1081

I suggest to keep rust stable as only officially supported version in travis. What is your opinion?

Sounds good to me.

Closing this, since we now have something usable.


[INTERNAL] Prepare tests to work with upcoming @ui5/project changes

See: https://github.com/SAP/ui5-project/pull/542

Coverage: 94.608%. Remained the same when pulling<PHONE_NUMBER>95577f1bed0e365a14dbf8d44ecb33 on fix-tests into d2be9bb68600ec97b9bc007f348f87ad456fb5a3 on main.


V1.0 Release Milestone

We would like to begin using Stash in a production project. We see that the FAQ states that Version 1.0 will come out once PSR-6 is complete, and it is now accepted. 243 demonstrates that v1.0.0-dev has been available for about a month, and no significant issues appear to be opened on it and no code changes have been committed in that month.
Could we get the README.md updated with a target release date? And or update the FAQ with some expectations? I would love to have that to convince my team to begin working on  PSR-6 Stash!

I'll be updating things this weekend. We're launching a 0.14 branch as a release candidate for v1, and will let that run for awhile before making that final release. I don't expect there to be many changes between v0.14 and v1 though.

Thanks! I'll be looking forward to the weekend.

Nice to know @tedivm

+1

@tedivm It's been about two weeks, not seeing a v0.14. Any update?

@tedivm would love to see some movement on this, excited to use this in production.

Same :)

I just finished the documentation updates and pushed them live. I am waiting on Travis-CI to confirm the master branch here is good after small small changes, and then I'll push live (probably in the next 15 minutes).

I apologize for the delays, but I've been sick for the last week :-(

Released!

No problem! Thank you very much :+1:


GetConsoleMode: remove duplicated text

It only serves to confuse.

Docs Build status updates of commit d5fa925:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/getconsolemode.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Deeper integration with the DSpace OAIRE-ELD project

As part of our approved EOSC-DIH Pilot project EOSC-ELD Advance we aim to integrate the broker client in the DSpace implementation.
We would like to reuse as much as possible your client/code but there are two issues that prevent us to do that:

the license associated with the client is not compatible with the DSpace license, is it possible for you to switch to a compatible OSS license? https://wiki.lyrasis.org/display/DSPACE/Code+Contribution+Guidelines#CodeContributionGuidelines-LicensingofContributions
the client is built as a single main command line application, we would like to refactor the project introducing a service layer that can be used by "your" command line tool and other client (such as the one that we plan to embed in DSpace). Are you interested in a such refactoring? later on would be possible to release the project on maven central so to use it as a maven dependency?

This has been solved by https://github.com/openaire/broker-cmdline-client/pull/2


Error running many models in parallel

Hi Aerispaha,
I found that when I run SWMM in parallel, it fails randomly. For example, if I run 500 cases in parallel, 0-20 out of 500 may not getting any results and prompt 303 error: not compatible hot start file.  The number of failed runs differs every try. What could be the problem please?

Hi @algchyhao, apologies for the delay!
I'm not sure why you are having this issue. Possibly this may be due to the fact that EPA SWMM is not thread safe. Currently there are no unit tests for the run_models module which does not help. The plan is to build out the tests for the v0.4.0 release.
However, on a broader degree, I think the scope of swmmio should be more focused on reading, writing, and manipulating SWMM models, rather than being used for running models programmatically. I would suggest that the community leverage pyswmm to run models (indeed maybe swmmio should leverage pyswmm to manage running simulations).
That said, to help us debug, what type of environment are you running your models within?

@aerispaha, I have modified a version of SWMMIO to use PySWMM.  When i try to run a pool of simulations, it seems to default to the hotstart file process.  It actually goes and adds 4 [FILES] blocks to my original INP file and looks like this:
I ran:
python -m swmmio -sp /Users/bryant/PROJECTCODE/swmmio/swmmio/wrapper
Output:
  ERROR 200: one or more errors in input file.
params to use hotstart2 and not save anything
SWMMExtCntrlModel.rpt failed to initialize
local variable 'swmm_version' referenced before assignment
SWMMExtCntrlModel.rpt failed to initialize
local variable 'swmm_version' referenced before assignment
SWMMExtCntrlModel.rpt failed to initialize
local variable 'swmm_version' referenced before assignment
SWMMExtCntrlModel.rpt failed to initialize
local variable 'swmm_version' referenced before assignment
SWMMExtCntrlModel.rpt failed to initialize
local variable 'swmm_version' referenced before assignment
SWMMExtCntrlModel.rpt failed to initialize
local variable 'swmm_version' referenced before assignment
running /Users/bryant/PROJECTCODE/swmmio/swmmio/wrapper/SWMMExtCntrlModel.inp

 o  Retrieving project dataTraceback (most recent call last):
  File "/Users/bryant/PROJECTCODE/swmmio/swmmio/wrapper/pyswmm_wrapper.py", line 66, in <module>
    run_model()
  File "/Users/bryant/PROJECTCODE/swmmio/swmmio/wrapper/pyswmm_wrapper.py", line 55, in run_model
    sim = pyswmm.Simulation(inp_file, rpt_file, out_file)
  File "/Users/bryant/PROJECTCODE/swmmio/venv/swmmio_develop/lib/python3.8/site-packages/pyswmm/simulation.py", line 69, in __init__
    self._model.swmm_open()
  File "/Users/bryant/PROJECTCODE/swmmio/venv/swmmio_develop/lib/python3.8/site-packages/pyswmm/swmm5.py", line 217, in swmm_open
    solver.swmm_open(inpfile, rptfile, binfile)
  File "/Users/bryant/PROJECTCODE/swmmio/venv/swmmio_develop/lib/python3.8/site-packages/swmm/toolkit/solver.py", line 509, in swmm_open
    return _solver.swmm_open(f1, f2, f3)
Exception:
  ERROR 200: one or more errors in input file.
swmmio has completed running 1 models
(swmmio_develop) bryant@Bryants-MacBook-Pro swmmio %

Original File with added lines:
[FILES]
;;  [FILES]
0   USE HOTSTART "/Users/bryant/PROJECTCODE/swmmio/swmmio/wrapper/SWMMExtCntrlModel_hot2.hsf"

[FILES]
;;  [FILES]
0   USE HOTSTART "/Users/bryant/PROJECTCODE/swmmio/swmmio/wrapper/SWMMExtCntrlModel_hot2.hsf"

[FILES]
;;  [FILES]
0   USE HOTSTART "/Users/bryant/PROJECTCODE/swmmio/swmmio/wrapper/SWMMExtCntrlModel_hot2.hsf"

[FILES]
;;  [FILES]
0   USE HOTSTART "/Users/bryant/PROJECTCODE/swmmio/swmmio/wrapper/SWMMExtCntrlModel_hot2.hsf"

I will submit my PR so you can take a look at my code.  I added a simple PY wrapper to replace you execution stuff.  It's not completely generic yet for any instance of Python... and it doesn't have unit tests as of this message.... they're to follow soon.

@bemcdonnell thanks for looking into this! This is a feature of swmmio that has not been actively maintained for a while, so I'm not surprised that there are some issues.
As I mentioned above in my comment above, I think it makes sense to leverage pyswmm for running models, rather than using a custom approach developed in swmmio. As such, I think we should set up a couple unit tests to ensure we're getting the behavior we want while using pyswmm as the "engine" to run the simulations.
I think we can use swmmio to handle the model creation tasks, and pyswmm to run the simulations. Looking forward to getting this impplemented!


Encode Hackathon - create a dapp that allows multiple users to stake together on the harmony protocol (like pooltogether) where users can use the staking rewards to purchase an NFT

Description
Related to the Encode Hackathon, this bounty is for promotion of the Harmony Marketplace SDK
Using the Harmony Marketplace SDK and staking APIs allow users to stake some ONE tokens into a smart contract, get governance tokens, use those tokens to vote on the purchase of NFTs using the staked ONE rewards. Users can transfer ONE tokens or HRC20 tokens that can be swapped for ONE tokens. Withdrawals are in ONE tokens
Context
Much like pooltogether; this Dapp allows users to deposit ONE tokens into the smart contract to earn staking rewards. The rewards are accumulated and then used to purchase NFTs on any NFT platform (e.g. NFT Keys, MADNft). Depositors get governance tokens that can be used to vote for the NFTs to purchase; and depositors are randomly selected to get the NFT.
Use the SDK to interact with the smart contract and accept ONE/HRC20 tokens for deposit. The contract should swap all deposited tokens for ONE and give users equivalent governance tokens. Tokens can be redeemed for ONE tokens if user decides to deposit.
Stretch goal: lock up 10% of the value of ONE tokens on-chain to be staked for each purchase that is sent to the token lister in ONE year. If listed in other tokens, swap the tokens to ONE first
Acceptance Criteria

[ ] Demonstrate the use of the SDK to integrate with the blockchain and the HRC standards
[ ] Create a DAPP that collects deposit of user ONE tokens or HRC20 tokens
[ ] Create a smart contract that accepts ONE tokens or HRC20 tokens. For HRC20 tokens swap tokens to ONE
[ ] Smart contract will issue governance tokens 1 - 1 of deposited ONE tokens
[ ] Users can redeem ONE tokens using their governance tokens (after undelegation period)
[ ] Staking rewards are used to purchase NFT (optionally user can vote on which NFT to purchase based on governance token)
[ ] Random user is given the NFT (use VRF for randomness) and airdropped to their wallet
[ ] Demo video
[ ] Opensource (MIT / BSD) github
[ ] Github documentation describing the use of SDK to integrate the above
[ ] Working website that can be demonstrated

Reward
$2000 USD in ONE

@jacksteroo please review and confirm

Confirmed.
Working website must be of production quality, with integration with the abovesaid NFT Marketplaces (NFTKey, MADnft, TofuNFT). Smart contract must be reviewed and audited by the Harmony, Encode and/or a security DAO like TruthSeekers.  Demo video should be informational, think Coursera or Udemy, limit to 10 minutes.


Link to Purl Version Specification does not work

The link to the purl version range defined in https://github.com/CycloneDX/specification/blob/8af880d5f2ba0a107de88a920a76cedd5ba75083/schema/bom-1.5.xsd#L3647
(https://github.com/package-url/purl-spec/VERSION-RANGE-SPEC.rst) does not work at the moment.
Currently the Version-Range Spec is not merged to main but only available in a different branch:
https://github.com/package-url/purl-spec/blob/version-range-spec/VERSION-RANGE-SPEC.rst
Once the spec is merged the problem should resolve by itself, but in the meantime it is a dead link.

duplicates #311, #399 & related to #187


Support unknown CRS

GeoPackage standard supports two undefined CRS
The record with an srs_id of -1 SHALL be used for
undefined Cartesian coordinate reference systems. The record with an srs_id of 0 SHALL be
used for undefined geographic coordinate reference systems.

Supporting at least undefined Cartesian coordinate systems would make it possible to use JSON-FG with engineering data like CAD drawings.
There are also coordinate reference systems that do not have authority codes from EPSG or elsewhere. If they cannot be expressed with for example WKT2 in JSON-FG they could at least be labeled as unknown.

Good points. This would require either special values or that that such CRSs are registered with the OGC Naming Authority, e.g. as http://www.opengis.net/def/crs/OGC/0/cartesian.

Meeting 2022-02-07: Agreement that adding such a capability is a good idea, also in order to support conversion of data between GeoPackage and JSON-FG. The details how to properly define such a CRS need more thought and then discussion with OGC-NA and the CRS DWG.

Here is a first attempt at a CRS definition for 3D:
<gml:EngineeringCRS xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" gml:id="engineering-3d" xsi:schemaLocation="http://www.opengis.net/gml/3.2 http://schemas.opengis.net/gml/3.2.1/gml.xsd">
  <gml:identifier codeSpace="OGC">engineering-3d</gml:identifier>
  <gml:name>Engineering CRS (3D) with an unknown origin and a Cartesian CS</gml:name>
  <gml:scope>
    A coordinate reference system used to describe spatial location over small areas of the Earth using a flat-Earth approximation of the Earth’s surface: corrections for Earth-curvature are not applied. Typical applications are for civil engineering construction and building information management. The origin of the datum is unknown.
  </gml:scope>
  <gml:cartesianCS>
    <gml:CartesianCS gml:id="cartesian-local-3d">
      <gml:identifier codeSpace="OGC">cartesian-local-3d</gml:identifier>
      <gml:name>Cartesian 3D CS (right-handed). Axes: x,y,z. Orientations: unspecified, unspecified, up. UoM: m.</gml:name>
      <gml:remarks>The location of the origin is unspecified. The direction of the first two axes is unspecified except that the three axes form a right-handed CRS. For use in engineering coordinate reference systems.</gml:remarks>
      <gml:axis>
        <gml:CoordinateSystemAxis gml:id="x-local" uom="http://www.opengis.net/def/uom/UCUM/0/m">
          <gml:identifier codeSpace="OGC">x-local</gml:identifier>
          <gml:remarks>For use in engineering coordinate reference systems.</gml:remarks>
          <gml:axisAbbrev>x</gml:axisAbbrev>
          <gml:axisDirection codeSpace="OGC">unspecified</gml:axisDirection>
        </gml:CoordinateSystemAxis>
      </gml:axis>
      <gml:axis>
        <gml:CoordinateSystemAxis gml:id="y-local" uom="http://www.opengis.net/def/uom/UCUM/0/m">
          <gml:identifier codeSpace="OGC">y-local</gml:identifier>
          <gml:remarks>For use in engineering coordinate reference systems.</gml:remarks>
          <gml:axisAbbrev>y</gml:axisAbbrev>
          <gml:axisDirection codeSpace="OGC">unspecified</gml:axisDirection>
        </gml:CoordinateSystemAxis>
      </gml:axis>
      <gml:axis>
        <gml:CoordinateSystemAxis gml:id="z-local" uom="http://www.opengis.net/def/uom/UCUM/0/m">
          <gml:identifier codeSpace="OGC">z-local</gml:identifier>
          <gml:remarks>For use in engineering coordinate reference systems.</gml:remarks>
          <gml:axisAbbrev>z</gml:axisAbbrev>
          <gml:axisDirection codeSpace="OGC">up</gml:axisDirection>
        </gml:CoordinateSystemAxis>
      </gml:axis>
    </gml:CartesianCS>
  </gml:cartesianCS>
  <gml:engineeringDatum>
    <gml:EngineeringDatum gml:id="engineering-unknown-origin">
      <gml:identifier codeSpace="OGC">engineering-unknown-origin</gml:identifier>
      <gml:name>Engineering Datum with an unknown origin</gml:name>
      <gml:scope>For use in unspecified engineering coordinate reference systems.</gml:scope>
    </gml:EngineeringDatum>
  </gml:engineeringDatum>
</gml:EngineeringCRS>


Expecting kwargs does not work in Ruby 3.2.

Subject of the issue
Your environment

Ruby version: 3.2
rspec-mocks version: 3.12

Steps to reproduce
# set up double
repo_double = instance_double(MyRepo)
expect(repo_double).to receive(:filter).with(first_name: "Michael", last_name: "Knight").and_return([])

# call filter of double in implementation
filter = { first_name: "Michael", last_name: "Knight" }
repo.filter(**filter)

fails with
#<InstanceDouble(Repositories::MyRepo) (anonymous)> received :filter with unexpected arguments
         expected: ({:first_name=>"Michael", :last_name=>"Knight"}) (keyword arguments)
              got: ({:first_name=>"Michael", :last_name=>"Knight"}) (options hash)

Expected behavior
the spec should not fail. This code worked in Ruby 3.1.2
Actual behavior
the spec fails
Thanks

Whats the implementation of filter? As you can see from other issues we're aware of some differences in Ruby 3.2 so this is probably a duplicate.

In general, there should be no difference in 3.2?
a = {a: 1, b: 2}

def x(**opt)
  puts opt.inspect
end
def y(a:, b:)
  puts a + b
end
def x(opt)
  puts opt.inspect
end

x(**a) # => {:a=>1, :b=>2}
y(**a) # => 3
z(**a) # => {:a=>1, :b=>2}

It makes a difference because:

@pirj, in the case of def x(opt) RSpecs output above would be correct, it doesn't take keyword arguments, and in general using **kwargs to an argument as a hash is a duplicate of #1492 and there is something that changed there, but honestly people shouldn't be de-splating keyword arguments to hashes

@JonRowe here's the implementation of filter
def filtered(**filter)
  get("customers", filter)
end

private

def get(path, params = {})
  conn.get(path, params)
end

That's what we came up with to fix this issue https://github.com/platogo/rspec-mocks/commit/6cdc4867952c4c5f8f47fdfea112ca785a9e3cd3

This is interesting, @gregg-platogo !
Wondering if it would work like we do e.g. here:
        @original_implementation_callable ||= original_method ||
          Proc.new do |*args, &block|
            @object.__send__(:method_missing, @method_name, *args, &block)
          end.tap do |proc|
            proc.ruby2_keywords if proc.respond_to?(:ruby2_keywords)
          end

Would you be so kind to check if this would work for your cases?

Digging internet late at night, I think the issue is here no ?

We should capture args and kwargs, I might be wrong of course

yea. When I monkey patch to

My pre-ruby 3 working, now not working test is finally green again

I don't have time nor faith to write the spec, hence make a PR. But I think that's it

This is working for me as well, code for convenience:
module RSpec
  module Mocks
    class MessageExpectation
      def and_call_original
        block = lambda do |original, *args, **kwargs, &b|
          original.call(*args, **kwargs, &b)
        end
        block = block.ruby2_keywords if block.respond_to?(:ruby2_keywords)

        wrap_original(__method__, &block)
      end
    end
  end
end

It still results in a warning:
Skipping set of ruby2_keywords flag for proc (proc accepts keywords or proc does not accept argument splat)
But tests are green.

@jonfreeland I wonder if the issue is fixed in 3.12.6 by this PR: https://github.com/rspec/rspec-mocks/pull/1552
@gregg-platogo 3.12.6 now contains the fix that is very similar to yours: https://github.com/rspec/rspec-mocks/pull/1552. Could you please verify that it works for you?

Yes, we did update to 3.12.6 last week and it does work like a charm ❤ Thank you guys!

@JonRowe I wonder if this issue can be closed now, WDYT?

I noticed that this issue hasn't had any updates in a while and the issue has been resolved, can it be closed?

Seems fixed. Thanks everyone involved.


Left-hand sidebar doesn't show all subpages

Issue in /src/pages/uxp/reference-js/Global Members/Data Transfers/index.md (and related)
I know we had this fixed at one point, but it looks broken again.

Replacing spaces with %20 in the paths introduced the regression see https://github.com/AdobeDocs/uxp-photoshop/commit/38e26e8a50ac0d5c1adabfd68353038b89588e1b


Use sync.Map for ASB active messages

Description
Moves the ASB implementation to use sync.Map instead of native map and mutex to handle active message tracking. This is because we've been seeing crashes in the E2E related to the active message access (even when all writes are protected a write mutex and all read protected by a read mutex 🤔). I can confirm that this change DOES stop the sidecar crashing during the Azure E2E. However, it DOES NOT fix the Azure E2E tests. They still fail. I've also ran the E2E tests against 1.9.5 and they also fail and do not include the most recent changes.
UPDATE: Interestingly reverting to using append also stops the crash.
Please explain the changes you've made
Issue reference
We strive to have all PR being opened based on an issue, where the problem or feature have been discussed prior to implementation.
Please reference the issue this PR will close: #[issue number]
Checklist
Please make sure you've completed the relevant tasks for this PR, out of the following list:

[ ] Code compiles correctly
[ ] Created/updated tests
[ ] Extended the documentation / Created issue in the https://github.com/dapr/docs/ repo: dapr/docs#[issue number]

UPDATE: Interestingly reverting to using append also stops the crash.

Interesting. Just using append also works, but since acc to the PR all map access was behind locks, why did it panic when using index?
Should we continue to use map and mutex locks instead of sync.Map? I think sync.Map is a better option.
@jjcollinge thoughts?

I think it'd be safer to move to sync.Map as it's not clear to me why we were seeing the panic on the native map and how using append is avoiding that. Just to make it super clear, the E2E tests are still failing for me against these changes and on older stable versions of Dapr. It'd be useful if others could confirm whether they see the Azure E2E tests fail on versions of Dapr prior to this change set too.

I think it'd be safer to move to sync.Map as it's not clear to me why we were seeing the panic on the native map and how using append is avoiding that. Just to make it super clear, the E2E tests are still failing for me against these changes and on older stable versions of Dapr. It'd be useful if others could confirm whether they see the Azure E2E tests fail on versions of Dapr prior to this change set too.

I do have a theory for append. When using append, if there is not enough memory allocated, a new underlying array is created.
The append built-in function appends elements to the end of a slice. If it has sufficient capacity, the destination is resliced to accommodate the new elements. If it does not, a new underlying array will be allocated. Append returns the updated slice. - From docs
That still does not explain why len(s.activeMessages) is zero in the line before and then in for-range loop it contains messages.

/ok-to-test

I think it'd be safer to move to sync.Map as it's not clear to me why we were seeing the panic on the native map and how using append is avoiding that. Just to make it super clear, the E2E tests are still failing for me against these changes and on older stable versions of Dapr. It'd be useful if others could confirm whether they see the Azure E2E tests fail on versions of Dapr prior to this change set too.

I agree that we should stick to using sync.Map here.
Just left a small question/comment.
Also, @jjcollinge when you say that e2e tests are still failing, are these still the ones mentioned in https://github.com/dapr/dapr/pull/5769#issuecomment-1385143072 and what are the errors reported for this failure in App/daprd logs?

I'm running the E2E tests against my own Azure infra. I'm not seeing any errors (other than lock renewal for missing messages) but many test cases fail due the assertions themselves. I've tried uninstall my custom Dapr version and installing stable versions via the CLI and rerunning the tests whilst validating that the pubsub apps that get deployed are running the stable daprd versions and they result in the same test case failures.

UPDATE: Interestingly reverting to using append also stops the crash.

I think this may be because the slice was initialized with a length of 0 and a capacity of non-0? Wonder if changing from make(type, 0, capacity) to make(type, length) would work.
I personally do prefer not using sync.Map because doing things with a lock ensure better consistency.
This is from the docs of sync.Map’s Range function:

Range does not necessarily correspond to any consistent snapshot of the Map's contents: no key will be visited more than once, but if the value for any key is stored or deleted concurrently (including by f), Range may reflect any mapping for that key from any point during the Range call. Range does not block other methods on the receiver; even f itself may call any method on m.

Yh thinking about this, this isn't even a concurrency issue, this is just incorrectly using the slice. I do typically prefer using native maps and a mutex (hence it was this before) and given the above I'm happy to revert to using those without initializing the map to a length of 0.

I'm running the E2E tests against my own Azure infra. I'm not seeing any errors (other than lock renewal for missing messages) but many test cases fail due the assertions themselves. I've tried uninstall my custom Dapr version and installing stable versions via the CLI and rerunning the tests whilst validating that the pubsub apps that get deployed are running the stable daprd versions and they result in the same test case failures.

The E2E tests if modified are not necessarily backwards compatible with a previous version of Dapr.
You would need to check out the dapr/dapr 1.9 release branch and run the E2E tests from there if you are using Dapr 1.9.X.
E2E tests in master are only guaranteed to work with the master build of dapr/dapr, unless of course we merged something without running the E2E test.

/ok-to-test

Will update https://github.com/dapr/dapr/pull/5780 to include this commit now.


Generate actions from openapi

Instead of manually creating the endpoints and params that a rest endpoint needs, use the openapi.json file to get this and create this code.
So far we take from the openapi.json the types, the (typed) params, urls and the services (params with urls)

Codecov Report

Merging #148 into master will decrease coverage by 0.02%.
The diff coverage is 82.25%.

@@            Coverage Diff             @@
##           master     #148      +/-   ##
==========================================
- Coverage   73.56%   73.54%   -0.03%
==========================================
  Files         115      115
  Lines        2228     2264      +36
  Branches      394      395       +1
==========================================
+ Hits         1639     1665      +26
- Misses        586      596      +10
  Partials        3        3

Impacted Files
Coverage Δ

src/generated/Types.ts
100.00% <ø> (ø)

src/services/useGetFacts.ts
0.00% <0.00%> (ø)

src/services/useMassChangePolicyEnabled.ts
0.00% <0.00%> (ø)

src/types/Policy/Policy.ts
100.00% <ø> (ø)

src/services/useVerifyPolicy.ts
66.66% <66.66%> (ø)

src/generated/ActionCreators.ts
78.08% <78.08%> (ø)

src/config/Config.ts
100.00% <100.00%> (ø)

src/pages/ListPage/CreatePolicyWizard.tsx
25.49% <100.00%> (ø)

src/services/Api/ActionBuilder.ts
98.18% <100.00%> (+0.95%)
:arrow_up:

src/services/useChangePolicyEnabled.ts
100.00% <100.00%> (ø)

... and 9 more

A lot to unpack here. I think it's all good. All the tests I tried work. Merging. LGTM.


Login input is enabled for a brief moment after successful login

Less noticeable in prod, but locally can be seen:

No longer needed


Feature/non linear spine items

User interface for https://github.com/readium/readium-shared-js/pull/211
Fixes:
https://github.com/readium/readium-js-viewer/issues/188

Live demonstration:
http://readium-diagram.surge.sh/?epub=nonLinear

Aside from the conflicts noted above and in the related PR 211, is there more work to be done here?

@rkwright yes, I need to test Media Overlays (make sure the boundaries of the ancillary document are not crossed when audio playback reaches the end of the spine item), and I need to check the general behaviour in the scroll view mode(s).

Defer out of 0.22 because there is more testing and some minor modifications still needed.

Not sure why I was not seeing this correctly yesterday but I do see now the
|<< at the top left hand side of the content view the small button labelled ("Return to Primary Reading Flow [0]") when I hover over a non-linear document (right above where the Previous Page button would be when there are more than one page to move back from.
Also the shortcut key 0 also seems to work as expected and from my point of view this looks great.
I think the shortcut "0" is fine, I think the icon image is fine as well  (i.e.: play on the REW and REW to Beginning from the old tape deck days which I think makes a lot of sense)
Is there anything else we need to decide before this gets merged into Readium main developers branch?

I think this is a UI that is a bit easter-eggy in that you need to hover
over the right spot to see the UI.
Ric
From:  AnFengDe<EMAIL_ADDRESS>Reply-To:  readium/readium-js-viewer
<reply+002e2bc83fb8e48d8e70d6002e6bc39e6a50139b47443cc692cf0000000113a793449
<EMAIL_ADDRESS>Date:  Wednesday, July 20, 2016 at 2:30 PM
To:  readium/readium-js-viewer<EMAIL_ADDRESS>Cc:  Ric Wright<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject:  Re: [readium/readium-js-viewer] Feature/non linear spine items
(#402)
Not sure why I was not seeing this correctly yesterday but I do see now the
|<< at the top left hand side of the content view the small button labelled
("Return to Primary Reading Flow [0]") when I hover over a non-linear
document (right above where the Previous Page button would be when there are
more than one page to move back from.
Also the shortcut key 0 also seems to work as expected and from my point of
view this looks great.
I think the shortcut "0" is fine, I think the icon image is fine as well
(i.e.: play on the REW and REW to Beginning from the old tape deck days
which I think makes a lot of sense)
Is there anything else we need to decide before this gets merged into
Readium main developers branch?

You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<https://github.com/readium/readium-js-viewer/pull/402#issuecomment-23405613
9> , or mute the thread
<https://github.com/notifications/unsubscribe-auth/AC4ryJPscnp5Nf9ykB7_Fji7G
51xbPiEks5qXndEgaJpZM4F_g6w> .

I see, and I guess the same goes for the bottom left corner where the |< "Go Back in Navigation History [9]" pops up when you hover over that area if applicable.
If that the case then maybe would we want to make those new buttons show up all the time when you are on a non-linear page to show the user that there is something special here and it helps them get back to where they were?
I think everyone understands what the top button in the upper left corner will do right?  This will always bring you back no matter how many pages you go down on a non-linear document or even if one non-linear document references another non-linear document and the user then follows that and goes multiple pages in that document that pressing this top left button "Return to Primary Reading Flow [0]" that the user will be brought straight back to where they left off in the original book before they explored the non-linear content.  (I assume everyone agrees this is what this button does)
I guess my other question is how that 2nd button in the bottom left corner "Go Back in Navigation History [9]" behaves since I am trying to understand what it does especially when there are multiple pages on a non-linear page and maybe what the behavior is when one non-linear page links to another non-linear page which may have multiple pages on it as well.  Either this button is not doing what it was meant to do or I am really not understanding what it should do.
I thought this would bring you back page by page, and document by document until you get ultimately back to the main document before you started exploring the non-linear spine item.  What is a little confusing is that the link Daniel gave http://readium-diagram.surge.sh/?epub=nonLinear starts at the nonLinear page so this button doesn't appear initially and then clicking on the embedded link to the << (8) linear (primary) will cause this button to start showing up in the bottom left corner which when pressed brings you back to the non-linear page.  So what was messing me up is I started at the non-linear page, then pressed the link to << (8) linear (primary) then pressed the link (9) non-linear (ancillary) > at which point finally the "Button: Return to Primary reading flow [0]" appears but the "Button: Go Back in Navigational History [9] can be pressed twice, once to go back to the main document and again to bring you back to the non-linear page since this was the first page you were on since the link itself was to this non-linear page originally.  I guess that all makes sense but just making sure this is what everyone expects to happen.
We can discuss this with a UI/UX employee if you would like but I am trying to understand what we want/need here.
Thanks
Charles.


Categorize block builder CLI options to improve UX

The Besu CLI help groups the following options as Block Builder options. Depending on the consensus algorithm used, some are not applicable, and some have different default values.  Grouping these and including the different default values by consensus mechanism will improve UX.
      --min-block-occupancy-ratio=<minBlockOccupancyRatio>
                             Minimum occupancy ratio for a mined block
                               (default: 0.8)
      --min-gas-price=<minTransactionGasPrice>
                             Minimum price (in Wei) offered by a transaction
                               for it to be included in a mined block (default:
                               0x00000000000000000000000000000000000000000000000
<PHONE_NUMBER>00003e8)
      --min-priority-fee=<minPriorityFeePerGas>
                             Minimum priority fee per gas (in Wei) offered by a
                               transaction for it to be included in a block
                               (default:
                               0x00000000000000000000000000000000000000000000000
<PHONE_NUMBER>0000000)
      --miner-coinbase=<coinbase>
                             Account to which mining rewards are paid. You must
                               specify a valid coinbase if mining is enabled
                               using --miner-enabled option
      --miner-enabled        Set if node will perform mining (default: false)
      --miner-extra-data=<extraData>
                             A hex string representing the (32) bytes to be
                               included in the extra data field of a mined
                               block (default: 0x)
      --miner-stratum-enabled
                             Set if node will perform Stratum mining (default:
                               false)
      --miner-stratum-host=<stratumNetworkInterface>
                             Host for Stratum network mining service (default:
                               <IP_ADDRESS>)
      --miner-stratum-port=<stratumPort>
                             Stratum port binding (default: 8008)
      --target-gas-limit=<targetGasLimit>
                             Sets target gas limit per block. If set, each
                               block's gas limit will approach this setting
                               over time.

From @fab-10 (paraphrased by me in places)

stratum options are definitely PoW only, but --miner-coinbase could possibly have a role in PoS as last resort for the fee recipient, if none is passed by the CL.
--miner-extra-data could be also used with PoS
--min-priority-fee is related to the fee market, and consensus agnostic
--min-block-occupancy-ratio defaults to 1 on PoS
--miner-enabled has no effect on Clique and PoS, because in these setup it is expected to build blocks

closing. complete.
Block Builder Options
--block-txs-selection-max-time=
Specifies the maximum time, in milliseconds, that could be spent
selecting transactions to be included in the block. Not compatible
with PoA networks, see poa-block-txs-selection-max-time. (default:
+5000)
--min-block-occupancy-ratio=
Minimum occupancy ratio for a mined block (default: 0.8)
--min-gas-price=
Minimum price (in Wei) offered by a transaction for it to be included in
a mined block (default:
0x00000000000000000000000000000000000000000000000000000000000003e8)
--min-priority-fee=
Minimum priority fee per gas (in Wei) offered by a transaction for it to
be included in a block (default:
0x0000000000000000000000000000000000000000000000000000000000000000)
--miner-coinbase=
Account to which mining rewards are paid. You must specify a valid
coinbase if mining is enabled using --miner-enabled option
--miner-enabled        Set if node will perform mining (default: false)
--miner-extra-data=
...


Insufficient Blocking Rules on Some Data

Describe the bug
Duplicates are not found when running on certain test data supplied by Octavian Chiorcea<EMAIL_ADDRESS>To Reproduce
Steps to reproduce the behavior:

Run the script as usual on the following test data:

cage@yeti cli]$ cat /tmp/test/4/small.csv
id,truth_value,family_name,given_name,gender,birth_date,phone,street_address,city,state,postal_code,SSN
8,9b0b0b7c-e05e-4c89-991d-268eab2483f7,Obrien,Curtis,M,07/02/1996,,300 Amy Corners Suite 735,Rileytown,Alaska,60281,480-21-0833
342,9b0b0b7c-e05e-4c89-991d-268eab2483f7,Orbien,Cutris,M,07/02/1996,,300 Amy oCrenrs Suite 735,Rileytown,Alaska,60281,480-210-833
502,9b0b0b7c-e05e-4c89-991d-268eab2483f7,bOrien,Curtsi,M,07/02/1996,,300 AmyCo rners Suite 735,Rileytown,Alaska,60281,480-21-8033
618,9b0b0b7c-e05e-4c89-991d-268eab2483f7,Obrine,Curtsi,M,07/02/1996,,300 AmyC orners Suite7 35,Rileytown,Alaska,60281,48-021-0833
744,9b0b0b7c-e05e-4c89-991d-268eab2483f7,bOrien,Curtsi,M,07/02/1996,,3 00Amy Corners Suite 735,Rileytown,Alaska,60281,480-210-833
223,04584982-ae7a-44a1-b4f0-e927a8bab0e1,Russell,Lindsay,F,02/05/1977,,2110 Kimberly Villages Apt. 639,New David,Wyoming,52082,211-52-6998
225,04584982-ae7a-44a1-b4f0-e927a8bab0e1,R,Lindsay,F,02/05/1977,,2110 Kimberly Villages Apt. 639,New David,Wyoming,52082,211-52-6998
226,04584982-ae7a-44a1-b4f0-e927a8bab0e1,Russel Smith,Lindsay,F,02/05/1977,,2110 Kimberly Villages Apt. 639,New David,Wyoming,52082,211-52-6998
273,04584982-ae7a-44a1-b4f0-e927a8bab0e1,Russlel,Lnidsay,F,02/05/1977,,2110 Kimbelry Vilalges Apt. 639,New David,Wyoming,52082,211-52-6989
311,04584982-ae7a-44a1-b4f0-e927a8bab0e1,Russlel,Lindasy,F,02/05/1977,,2110 Kimbelry Villgaes Apt. 639,New David,Wyoming,52082,211-52-9698
652,04584982-ae7a-44a1-b4f0-e927a8bab0e1,uRssell,Lidnsay,F,02/05/1977,,2110 Kimberly Vlilagse Apt. 639,New David,Wyoming,52082,121-52-6998
726,04584982-ae7a-44a1-b4f0-e927a8bab0e1,uRssell,Lindasy,F,02/05/1977,,2110 Kmiberly Vilalges Apt. 639,New David,Wyoming,52082,2115-2-6998

Call the script like this: poetry run  python ecqm_dedupe.py dedupe-data --fmt CSV  /tmp/test/4/small.csv  /tmp/test/

Expected behavior
The script should output an excel file with all of the duplicates identified.
Actual behavior
In the results xlsx file , i see it detects duplicates only the ones that have wrong names (the ones that are the correct names, it seems to have a different cluster id) - perhaps this happens because it doesn't use birth_date to detect dupes.  I tried to change deduplifhirLib/settings.py , but it didn't seem it had any effect changing config there.

This seems to be addressed but holding off on closing until correspondence with<EMAIL_ADDRESS>


Dynamic queues

Deleted bindConsumer and a TODO comment

@dpattermann-usgs this is fairly old, did we lose something? Closing because I'm assuming this is now irrelevant.

I don't think so. I think this might have been when we were looking for problems in RabbitMQ a while back. I agree that it's irrelevant now.


Corruption values should be hidden for Agents

I'd love to track my Agent's Corruption but per the Impossible Landscapes book
"Maintain a Corruption rating for each Agent, from 0 to 10.  Make sure players never know their scores or that you are tracking them. Keep the Corruption rating itself unknown if you can."
So can this section be hidden to players?

Is it not? Only someone logged in with GM level privileges should be able to see it. Try logging in as one of your players and see if you can still see the field.

Going to go ahead and close this, feel free to re-open if it's still an issue.


Can the pool protocols resolve the issue which one farmer mines at two pool at the same time?

Chia is scam!

fantastic！


Typinator snippets

Do you have a list of your (public) Typinator snippets? I really like the look of your snippets for date/time expansion from your Fantastical article on Medium and was wondering if those were publicly available?
(or did I miss a link to them in the article?)

Here is the Typinator set I use for Fantastical.
I actually cut down quite a lot of my Typinator use into KM palettes that look like these :

I then activate them with a hotkey and type a letter and text is inserted :

I also have one for emojis :

I will write an article on how I use KM palettes soon though. 🙂
Hope you like the Fantastical Typinator set, I use that one a lot.


Add ArxivGPT

By submitting this pull request, I promise I have read the contribution guidelines twice and made sure my submission follows it.
⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆

Not sure I want this. Seems like a low-effort fork. The maintainer didn't even bother to update the repo description, and it has not been updated for some time.


pip install?

Dumb question: Does pip install causal-learn grab the latest version from the repository, or do I need to grab the repository version and install that myself locally?
Thanks!

Thanks for raising this brilliant question. This is very important as it could help to make sure that our users are using the up-to-date version.
For pip install causal-learn, it will install the package we released to PyPI (https://pypi.org/project/causal-learn/). However, we only do it when there have been significant updates to our package. So if users would like to use the most up-to-date one, it is more recommended to install it from the source (GitHub). At the same time, the version installed from PyPI should have most of the up-to-date features that significantly influence the functionality and performance, though generally not including the most recent commits.

Thanks for the clarification!


Added homepage redirect docs

I've fleshed out the explanation from the issue tracker, and formatted it in Markdown.  If you notice anything amiss, I'll be happy to fix it up.  Might be worth copying the docs into the wiki area once they've been collected?  Let me know if there's anything else I should write up!
Fixes: #77

Great, thanks!


enable shell integration

fixes: #14
i considered a 'shell' attrset that had the per-shell enabled stuff in that, but decided to start simpler. there's at least one example like this in nixpkgs for the 'foot' program.
https://github.com/NixOS/nixpkgs/blob/ee8bdf4f09fdb4809ff8f2202decbfd02450edc3/nixos/modules/programs/foot/default.nix#L83
i left the integration enabled by default for all 3 main shell programs. i figure it's more common to want the commands that not.
i also considered that the content of brew shellenv could easily be generated from the prefix and other info already within the module.
If you would prefer that route I can rework this, I think as-is does work fine though and it aligns with some homebrew instructions.
per homebrew docs, homebrew stuff is installed in front of the existing nix path which should prevent brew programs from failing in strange ways.
Example content of my brew shellenv command output:
export HOMEBREW_PREFIX="/opt/homebrew";
export HOMEBREW_CELLAR="/opt/homebrew/Cellar";
export HOMEBREW_REPOSITORY="/opt/homebrew/Library/.homebrew-is-managed-by-nix";
PATH="/opt/homebrew/bin:/opt/homebrew/sbin:/Users/drewry.pope/.nix-profile/bin:/etc/profiles/per-user/drewry.pope/bin:/run/current-system/sw/bin:/nix/var/nix/profiles/default/bin:/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin"; export PATH;
[ -z "${MANPATH-}" ] || export MANPATH=":${MANPATH#:}";
export INFOPATH="/opt/homebrew/share/info:${INFOPATH:-}";

Definitely could generate this ourselves if we wanted.
I'm not sure if manpath and infopath are correct for nix.
testing done: i opened each shell and saw that 'cowsay' was accessible.

Are you sure zsh.interactiveShellInit and bash.interactiveShellInit exist as home-manager options? I can't get it to work in my config, home-manager options search shows this only as an option for fish


loadCount attributes on collection lost on access

Laravel Version: 5.8.14
PHP Version: 7.1.3
Database Driver & Version:

Description:
Lazy-loading a relationship's count with the new loadCount method echoes the expected entity with the count attribute, but accessing that attribute always yields null.
Steps To Reproduce:
Assuming Discussion is a valid Eloquent model with a hasMany relationship to Message, in the tinker console:
$discussions = Discussion::all();
$discussions->loadCount('messages');
// => echoes collection with visible `messages_count` attribute on each entity

$d = $discussions->first()
// => echoes entity with visible `messages_count` attribute
// Care\Modules\Discussions\Models\Discussion {#3092
//     discussion_id: 1,
//     slug: "neque-ex-ut-ut-id-aut-facilis-beatae-non",
//     subject: "Neque ex ut ut id aut facilis beatae non.",
//     user_id: 1,
//     team_id: 1,
//     created_at: "2019-05-06 14:27:49",
//     updated_at: "2019-05-06 14:27:49",
//     messages_count: 51,
//   }

$count = $d->messages_count
// expected value of $count is 51
// actual value is `null`

$arr = $d->toArray()
// expected value of $arr['messages_count'] is 51
// actual value is null

Please post your Discussion model.

 Swear I tried this every which way, but maybe my Tinker session was caching something weird.
For reference,

Please post your Discussion model.

Just a basic Eloquent model with a hasMany for example purposes.
class Discussion extends Model
{
    protected $table = 'discussions';
    protected $primaryKey = 'discussion_id';
    protected $guarded = [];

    public function messages()
    {
        return $this->hasMany(Message::class, 'discussion_id', 'discussion_id');
    }
}


Ignore files when using Publish-Module

When I publish a module using the Publish-Module command to the PowerShellGallery it will automatically generate a nuspec file for me, and in turn a NuGet package is generated.
I'd like a way to mark files to be excluded from the package that I'm uploading so that I don't publish unneeded files, such as my Pester test scripts.
Currently my workaround for this is to have a step that copies all the files I want packaged into a new folder and then run the Publish-Module from there instead of my repository root.
My thought is that if you had a file like a .psget-files.json in the root of the folder you would then use file glob that allows you to either specify the files to include or exclude. Example file:
{
     "include": "*.psm1;*.psd1",
     "exclude": ".vscode;*.tests.*"
}

Then when the nuspec is being generated it can create <file /> XML nodes for it using the glob patterns.

If the only concern is Pester test scripts, I think it's actually a best practice to include them.  In the future, maybe PowerShellGallery can leverage included test scripts.  However, if you have some other files you want excluded, perhaps PSGet can borrow something like .gitignore

I was using Pester as an example of something that's common, but it's not the old thing. I have .gitignore/.gitattributes/.editorconfig in the repo, a .vscode folder for launch/tasks, etc.
I also accidentally published a version of my module with a few hundred extra files because I hadn't cleaned up the repo from testing (the module is a node.js version manager and I had some installed versions of node.js that got automatically picked up and put in the NuGet package).
Another scenario that I've come across is when I'm using .NET to create a library to invoke from PowerShell (to wrap some logic that was easier for me to write in F# than PowerShell) I don't want to publish the source code with the module, only the dll. In this scenario a .gitignore file wouldn't be useful for finding the ignored files because the source would be in my repo, but I don't want it in the published module.

I think a current workaround would be to have a PowerShel script to build and copy only the files you want to publish to a different folder in your $PSModulePath and use that to publish.

Yep that's essentially the approach I take at the moment.

A recent refactor has made this enhancement achievable. Take a look at the branch above. Using the  tag in the nuspec is a departure from convention based packaging and requires explicitly defining all files. I have made the assumption of a single  entry with a pattern matching  all files as before (**/.) but reading in the 'exclude' patterns from user input.

Can you explain how one would use the -exclude flag to exclude all the files within a directory, but still retain the empty directory?


List.fold generic type parameters not inferred

The code below produces the following error:
[warning] x (dynamic) will need runtime check to cast to type List<String> (/Users/leafp/tmp/scratch.dart, line 4, col 20)

Suggesting that we are not successfully inferring the generic type parameters for fold.  I would have thought we would be catching this.  I don't think this is an instance of #25490, but maybe an interaction between the upwards inference on the arguments and the downwards inference on the closure parameter?
void main() {
  List<int> o;
  var x = o.fold(0, (x, y) => x + y);
  List<String> y = x;
}

funny enough, we have a test specifically for "fold" ... let me dig in

@leafpetersen here's what I see in terms of hints:
  info: [INFERRED_TYPE_CLOSURE] line 12, column 29 of /main.dart: (x, y) => x + y has inferred type (dynamic, int) → dynamic
            var x = o.fold(0, (x, y) => x + y);
                              ^^^^^^^^^^^^^^^
  info: [DYNAMIC_INVOKE] line 12, column 39 of /main.dart: x + y requires dynamic invoke
            var x = o.fold(0, (x, y) => x + y);
                                        ^^^^^

I believe what happens is:

We instantiate with T as dynamic.
That pushes down (dynamic, int) → dynamic to the closure.
When we come back up, we see that type as the 2nd arg to fold. LUB of "int" and "dynamic" will be "dynamic"

So I think we need #25490, unless I'm missing something.
If there's some way we could infer from only the first argument, we'd get T:int, but we'd still need to push that type down to the lambda, right? At least for checking. Otherwise I don't see how we know that the '+' is a valid operation.

Ah right.  Annoying.  I guess for now you just have to put types on the arguments.


schema: add user.new event

What does this pull request do? Explain your changes. (required)
Added mist user.new in the event schema and the frontend subscription dropdown.
Specific updates (required)

How did you test each of these updates (required)

Does this pull request close any open issues?

Screenshots (optional):

Checklist:

[X] I have read the CONTRIBUTING document.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[ ] I have added tests to cover my changes.

@gioelecerati Looks great. Let's sit on this for a bit until we're ready with the backend for it :+1:

Mergin'.


Added restart info before running

#8151

Deploy preview for docsdocker ready!
Built with commit 6d2f290ffa8a1ce8bbe9c63d450bdc4fbe310078
https://deploy-preview-8358--docsdocker.netlify.com

@panagiotismavridis Thank you for your feedback! We have received and reviewed your changes. Based on technical reviews, we did not incorporate your suggested changes. If you have additional concerns, please submit a new issue in this repository.


Add authentication doc

closes https://github.com/tektoncd/chains/issues/86

/lgtm

updated plumbing dep so that integration tests have access to the cluster again
ref https://github.com/tektoncd/pipeline/pull/3960

/lgtm

@lukehinds I think this also needs an /approved label to merge 😅

/approve


C1189	#error:  The <experimental/coroutine> and <experimental/resumable> headers are only supported with /await and implement pre-C++20 coroutine support. Use  for standard C++20 coroutines.

Hello,
I´m pretty new to... well kinda everything and I have an issue at the networking stuff.
As needed I am using C++20, but as you can see in the title VS wants me to get rid of "experimental" (I understand why), but if I do that, io_service.hpp will throw a lot of errors and I´m not sure how to fix that. Can someone help me? Might be REALLY easy to solve, but I dunno how.
Thanks for your work and have a great time.

add "/await" flag, or try andreasbuhr branch
cppcoro


generateGlyph improvement

Making some progress on https://github.com/google/roboto/issues/197, plus some cleanup.

LGTM


VS Installer warns: "We need to close the following process: OmniSharp"

When updating Visual Studio, sometimes the VS Installer warns:
"We need to close the following process: OmniSharp"
OmniSharp is the C# extension that runs inside of VS Code.
For best results:

Close VS Code instances - this will also shut down the OmniSharp process
Click retry

I've opened this issue to help people find the right solution to this problem. It likely should be closed, after it is tweaked as necessary.
This dialog is necessary because OmniSharp loads msbuild and nuget assemblies from Visual Studio locations. If omnisharp is left running while the setup completes, VS won't be able to properly update msbuild and nuget assemblies...and may require a restart of VS or Windows.
[feel free to edit this top post as necessary, if you would like]

@rrelyea Thanks for opening this issue! To provide a bit more detail, the C# extension does not ship with a complete set of build tools and for many scenarios it requires an installation of VS Build Tools or Mono depending on platform. If the C# extension detects that the a more complete set of build tools are installed it will make use of them to provide a better experience. This means that part of a user's VS install may be in use while trying to upgrade and the VS installer will now warn users to close OmniSharp which is run inside VS Code by the C# extension.


Update workflow/tests to use latest pybids

From @adelavega on June 24, 2017 16:41
Instead of installing from a commit, go for release
Copied from original issue: PsychoinformaticsLab/neuroscout#68

No longer relevant as we'll be usuing fitlins for execution


Unused entry markin all lines in Dockerfile

Please see this link for details: https://youtrack.jetbrains.com/issue/IDEA-174706

@seiyapl Thank you for this report.
ADD target/cargo.war $JETTY_BASE/webapps/ROOT.war

This is not a valid content so it will not be correctly handled by the plugin.
I guess that you have put Dockerfile entries into .dockerignore file.

Hi,
This is not .dockerignore file and I do not have such file in my project at all. This is the file that is used to build the docker image and it seems to be OK with the rules (see https://docs.docker.com/engine/reference/builder/#add).

Issue caused by misleading names. This case will be handled with #375