A helm plugin that shows a diff explaining what a helm upgrade would change

Overview

Helm Diff Plugin

Go Report Card GoDoc License

This is a Helm plugin giving your a preview of what a helm upgrade would change. It basically generates a diff between the latest deployed version of a release and a helm upgrade --debug --dry-run. This can also be used to compare two revisions/versions of your helm release.

Install

Using Helm plugin manager (> 2.3.x)

helm plugin install https://github.com/databus23/helm-diff

Pre Helm 2.3.0 Installation

Pick a release tarball from the releases page.

Unpack the tarball in your helm plugins directory ($(helm home)/plugins).

E.g.

curl -L $TARBALL_URL | tar -C $(helm home)/plugins -xzv

From Source

Prerequisites

  • GoLang >= 1.14

Make sure you do not have a verison of helm-diff installed. You can remove it by running helm plugin uninstall diff

Installation Steps

The first step is to download the repository and enter the directory. You can do this via git clone or downloaing and extracting the release. If you clone via git, remember to checkout the latest tag for the latest release.

Next, depending on which helm version you have, install the plugin into helm.

Helm 2
make install
Helm 3
make install/helm3

Usage

The Helm Diff Plugin

* Shows a diff explaining what a helm upgrade would change:
    This fetches the currently deployed version of a release
  and compares it to a local chart plus values. This can be 
  used visualize what changes a helm upgrade will perform.

* Shows a diff explaining what had changed between two revisions:
    This fetches previously deployed versions of a release
  and compares them. This can be used visualize what changes 
  were made during revision change.

* Shows a diff explaining what a helm rollback would change:
    This fetches the currently deployed version of a release
  and compares it to adeployed versions of a release, that you 
  want to rollback. This can be used visualize what changes a 
  helm rollback will perform.

Usage:
  diff [flags]
  diff [command]

Available Commands:
  release     Shows diff between release's manifests
  revision    Shows diff between revision's manifests
  rollback    Show a diff explaining what a helm rollback could perform
  upgrade     Show a diff explaining what a helm upgrade would change.
  version     Show version of the helm diff plugin

Flags:
  -h, --help                   help for diff
      --no-color               remove colors from the output
      --reset-values           reset the values to the ones built into the chart and merge in any new values
      --reuse-values           reuse the last release's values and merge in any new values
      --set stringArray        set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)
      --suppress stringArray   allows suppression of the values listed in the diff output
  -q, --suppress-secrets       suppress secrets in the output
  -f, --values valueFiles      specify values in a YAML file (can specify multiple) (default [])
      --version string         specify the exact chart version to use. If this is not specified, the latest version is used

Additional help topics:
  diff          

Use "diff [command] --help" for more information about a command.

Commands:

upgrade:

$ helm diff upgrade -h
Show a diff explaining what a helm upgrade would change.

This fetches the currently deployed version of a release
and compares it to a chart plus values.
This can be used visualize what changes a helm upgrade will
perform.

Usage:
  diff upgrade [flags] [RELEASE] [CHART]

Examples:
  helm diff upgrade my-release stable/postgresql --values values.yaml

Flags:
  -h, --help                   help for upgrade
      --detailed-exitcode      return a non-zero exit code when there are changes
      --post-renderer string   the path to an executable to be used for post rendering. If it exists in $PATH, the binary will be used, otherwise it will try to look for the executable at the given path
      --reset-values           reset the values to the ones built into the chart and merge in any new values
      --reuse-values           reuse the last release's values and merge in any new values
      --strip-trailing-cr      strip trailing carriage return on input
      --set stringArray        set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)
      --suppress stringArray   allows suppression of the values listed in the diff output
  -q, --suppress-secrets       suppress secrets in the output
  -f, --values valueFiles      specify values in a YAML file (can specify multiple) (default [])
      --version string         specify the exact chart version to use. If this is not specified, the latest version is used

Global Flags:
      --no-color   remove colors from the output

release:

$ helm diff release -h

This command compares the manifests details of a different releases created from the same chart

It can be used to compare the manifests of

 - release1 with release2
	$ helm diff release [flags] release1 release2
   Example:
	$ helm diff release my-prod my-stage

Usage:
  diff release [flags] RELEASE release1 [release2]

Flags:
  -C, --context int            output NUM lines of context around changes (default -1)
  -h, --help                   help for release
      --home string            location of your Helm config. Overrides $HELM_HOME (default "/home/aananth/.helm")
      --include-tests          enable the diffing of the helm test hooks
      --strip-trailing-cr      strip trailing carriage return on input
      --suppress stringArray   allows suppression of the values listed in the diff output
  -q, --suppress-secrets       suppress secrets in the output
      --tls                    enable TLS for request
      --tls-ca-cert string     path to TLS CA certificate file (default "$HELM_HOME/ca.pem")
      --tls-cert string        path to TLS certificate file (default "$HELM_HOME/cert.pem")
      --tls-hostname string    the server name used to verify the hostname on the returned certificates from the server
      --tls-key string         path to TLS key file (default "$HELM_HOME/key.pem")
      --tls-verify             enable TLS for request and verify remote

Global Flags:
      --no-color   remove colors from the output

revision:

$ helm diff revision -h

This command compares the manifests details of a named release.

It can be used to compare the manifests of 
 
 - latest REVISION with specified REVISION
	$ helm diff revision [flags] RELEASE REVISION1
   Example: 
	$ helm diff revision my-release 2

 - REVISION1 with REVISION2
	$ helm diff revision [flags] RELEASE REVISION1 REVISION2
   Example: 
	$ helm diff revision my-release 2 3

Usage:
  diff revision [flags] RELEASE REVISION1 [REVISION2]

Flags:
  -h, --help                   help for revision
      --strip-trailing-cr      strip trailing carriage return on input
      --suppress stringArray   allows suppression of the values listed in the diff output
  -q, --suppress-secrets       suppress secrets in the output

Global Flags:
      --no-color   remove colors from the output

rollback:

$ helm diff rollback -h

This command compares the laset manifests details of a named release 
with specific revision values to rollback.

It forecasts/visualizes changes, that a helm rollback could perform.

Usage:
  diff rollback [flags] [RELEASE] [REVISION]

Examples:
  helm diff rollback my-release 2

Flags:
  -h, --help                   help for rollback
      --strip-trailing-cr      strip trailing carriage return on input
      --suppress stringArray   allows suppression of the values listed in the diff output
  -q, --suppress-secrets       suppress secrets in the output

Global Flags:
      --no-color   remove colors from the output

Build

Clone the repository into your $GOPATH and then build it.

$ mkdir -p $GOPATH/src/github.com/databus23/
$ cd $GOPATH/src/github.com/databus23/
$ git clone https://github.com/databus23/helm-diff.git
$ cd helm-diff
$ make install

The above will install this plugin into your $HELM_HOME/plugins directory.

Prerequisites

  • You need to have Go installed. Make sure to set $GOPATH

Running Tests

Automated tests are implemented with testing.

To run all tests:

go test -v ./...

Release

Set GITHUB_TOKEN and run:

$ make docker-run-release
Comments
  • Show diff for actual state vs desired state

    Show diff for actual state vs desired state

    Hi, At the moment, if you make any manual changes to resources (not via helm) helm diff will not reflect these changes. I suggest that the output should reflect the desired vs actual state of the resources, just like running terraform plan.

    opened by dudicoco 48
  • Installation fails

    Installation fails

    Our CI workflow install the diff plugin. Since an hour ago it start failing (commit 4790fb13b990e7cd146211ef22cb0f5fbbba4c57) We are running:

    helm plugin install https://github.com/databus23/helm-diff

    Error:

    awk: cmd. line:1: warning: regexp escape sequence `"' is not a known regexp operator Downloading curl: (3) URL using bad/illegal format or missing URL Failed to install helm-diff For support, go to https://github.com/databus23/helm-diff. Error: plugin install hook for "diff" exited with error Error: Process completed with exit code 1.

    opened by rkeidar 39
  • Allow chart versioning

    Allow chart versioning

    We rename the existing version flag and re-use the existing helm version flag. This allow helm-diff to seamlessly work with other helm tooling such as helmfile

    opened by foklepoint 35
  • Plans to merge with helm core

    Plans to merge with helm core

    Hello folks,

    This is related to issue which is basically asking if helm-diff can become part of the helm core (here). The maintainer mentions that this question can be answered by the folks at "helm-diff" because it concerns itself with governance model and so on.

    So, are there any plans to get merged with the helm core? It would definitely make the helm'ing experience much better. The possibility of showing "diff" directly through helm commands using flags is promising.

    stale 
    opened by vishaltak 33
  • <release>  has no deployed releases

    has no deployed releases

    Related: https://github.com/helm/helm/pull/3597

    When using helm upgrade --install, if the first release fails, Helm will respond with an error saying that it cannot upgrade from an unknown state.

    The current workaround is to use helm upgrade --install --force but a handling like this is missing in helm diff.

    helm diff upgrade dyn . --allow-unreleased -q 
    "dyn" has no deployed releases
    Error: "dyn" has no deployed releases
    Error: plugin "diff" exited with error
    

    It would be great if this plugin could be catch this error.

    enhancement stale 
    opened by jkroepke 30
  • Some charts having diffs where there are no changes

    Some charts having diffs where there are no changes

    I'm having a problem with some charts when calling helm diff upgrade; it is detecting changes but when viewing the outputted diff, it appears to be the same. For example:

    default, foo-bar-service, Service (v1) has changed:
      # Source: foo-bar/templates/service.yaml
    - apiVersion: v1
    - kind: Service
    - metadata:
    -   name: foo-bar-service
    - spec:
    -   type: NodePort
    -   selector:
    -     app: foo-bar-frontend
    -   ports:
    -   - protocol: TCP
    -     port: 80
    + apiVersion: v1
    + kind: Service
    + metadata:
    +   name: foo-bar-service
    + spec:
    +   type: NodePort
    +   selector:
    +     app: foo-bar-frontend
    +   ports:
    +   - protocol: TCP
    +     port: 80
          targetPort:
    
    
    stale windows 
    opened by mahgo 29
  • support helm 3 using exec

    support helm 3 using exec

    Here is an other version for #147 which shells out to HELM_BIN.

    The following helm commands are used:

    • helm template for update
    • helm get to retrieve releases and revisions

    The following flags are not supported in helm 3 mode:

    • --set-file in upgrade
    • --no-hooks in upgrade (helm template in v3.0.0-beta.3 ignores this flag and returns always no hooks)
    • --include-tests in all commands as we ignore all hooks

    It would be possible to get the hooks for the installed releases/revisions if it is really needed.

    opened by jonasrutishauser 27
  • Error: context deadline exceeded context deadline exceeded Error: plugin

    Error: context deadline exceeded context deadline exceeded Error: plugin "diff" exited with error

    helm version 3.0.0 helm-diff plugin 3.0.0-rc.7

    helm diff upgrade myAPP
    --namespace=mynamespace
    --set global.image.tag="myimagetag"
    --set kong.front-gw.plugins.jwt.anonymousId="xxxx"
    --values=values.yaml
    --values=values-u.yaml
    ../helm/myAPP

    i get this error: Error: context deadline exceeded context deadline exceeded Error: plugin "diff" exited with error

    opened by zzarkouna 22
  • feature Implementation: Diff between Revisions #6

    feature Implementation: Diff between Revisions #6

    This provides the ability to do a diff on revisions. I have made some improvements with

    • safer code terminations with (exit 0),
    • Intelligent suggestions for subcommands
    • docs
    • code restructuring. kindly have a look, and let me know in case of corrections/bugs.

    Thanks..!!

    opened by codenio 22
  • New chart diffing

    New chart diffing

    This provides the ability to do a diff on a release that does not currently exist. This makes it much easier to use the plugin with things like helmfile as it doesn't error out and provides valuable feedback.

    NOTE: I have an additional PR that manages the merge conflicts of my two PRs that might be easier to merge for you.

    opened by jrnt30 22
  • Failed to create the file /tmp/helm-diff.tgz: Permission denied

    Failed to create the file /tmp/helm-diff.tgz: Permission denied

    This happens with both helm v2.14.3 and v3.3.0

    Steps to reproduce:

    touch /tmp/helm-diff.tgz
    chmod 000 /tmp/helm-diff.tgz
    helm plugin install https://github.com/databus23/helm-diff
    

    Expected results:

    helm downloads the appropriate tarball, unpackages it, puts the contents in their places in $HOME/.helm/
    helm removes the temporary file that was downloaded after using it
    

    Seen instead:

    Warning: Failed to create the file /tmp/helm-diff.tgz: Permission denied curl: (23) Failed writing body (0 != 16360) Failed to install helm-diff

    The "Steps to reproduce" are a contrived scenario, but I encountered it naturally when working on a machine I share with other users. In my case, another user launched helm plugin install weeks before I did.

    Workaround: sudo rm /tmp/helm-diff.tgz

    Subsequent problem:

    tar: diff/LICENSE: Cannot open: File exists
    tar: diff/bin: Cannot utime: Operation not permitted
    tar: diff/plugin.yaml: Cannot open: File exists
    tar: diff/README.md: Cannot open: File exists
    tar: diff/bin/diff: Cannot open: File exists
    tar: diff: Cannot utime: Operation not permitted
    tar: Exiting with failure status due to previous errors
    Failed to install helm-diff
    

    Workaround step two:

    sudo rm -rf /tmp/helm-diff/
    
    opened by mozai 17
  • With Helm 3 the release names are namespace scoped, thus it should be possible to helm diff release of two release with same name in different namespaces

    With Helm 3 the release names are namespace scoped, thus it should be possible to helm diff release of two release with same name in different namespaces

    With Helm 3 the release names are namespace scoped, thus it should be possible to helm diff release RELEASENAME RELEASENAME whereby the two release names RELEASENAME are in two different namespaces NAMESPACE1 and NAMESPACE2. Proposed syntax:

    helm diff release NAMESPACE1/RELEASENAME NAMESPACE2/RELEASENAME
    

    Fix at:

    • https://github.com/databus23/helm-diff/blob/94e41c631c77f84a9155ec397c4186326681ee28/cmd/release.go#L91
    • https://github.com/databus23/helm-diff/blob/94e41c631c77f84a9155ec397c4186326681ee28/cmd/release.go#L95

    Try to extract the namespace name if the release name is in format NAMESPACE1/RELEASENAME

    opened by sandipchitale 0
  • Bump helm.sh/helm/v3 from 3.9.4 to 3.10.3

    Bump helm.sh/helm/v3 from 3.9.4 to 3.10.3

    Bumps helm.sh/helm/v3 from 3.9.4 to 3.10.3.

    Release notes

    Sourced from helm.sh/helm/v3's releases.

    Helm v3.10.3

    v3.10.3

    Helm v3.10.3 is a security (patch) release. Users are strongly recommended to update to this release.

    While fuzz testing Helm, provided by the CNCF:

    • a possible stack overflow was discovered with the strvals package. Stack overflow cannot be recovered from in Go. This can potentially be used to produce a denial of service (DOS) for SDK users. More details are available in the advisory.
    • a possible segmentation violation was discovered with the repo package. Some segmentation violations cannot be recovered from in Go. This can potentially be used to produce a denial of service (DOS) for SDK users. More details are available in the advisory.
    • a possible segmentation violation was discovered with the chartutil package. This can potentially be used to produce a denial of service (DOS) for SDK users. More details are available in the advisory

    The community keeps growing, and we'd love to see you there!

    • Join the discussion in Kubernetes Slack:
      • for questions and just to hang out
      • for discussing PRs, code, and bugs
    • Hang out at the Public Developer Call: Thursday, 9:30 Pacific via Zoom
    • Test, debug, and contribute charts: ArtifactHub/packages

    Installation and Upgrading

    Download Helm v3.10.3. The common platform binaries are here:

    This release was signed with F126 1BDE 9290 12C8 FF2E 501D 6EA5 D759 8529 A53E and can be found at @​hickeyma keybase account. Please use the attached signatures for verifying this release using gpg.

    The Quickstart Guide will get you going from there. For upgrade instructions or detailed installation notes, check the install guide. You can also use a script to install on any system with bash.

    What's Next

    • 3.11.0 is the next feature release and will be on January 18, 2023.

    Changelog

    • Fix backwards compatibility 835b7334cfe2e5e27870ab3ed4135f136eecc704 (Martin Hickey)
    • Update string handling 3caf8b586b47e838e492f9ec05396bf8c5851b92 (Martin Hickey)
    • Update repo handling 7c0e203529d4b9d51c5fe57c9e0bd9df1bd95ab4 (Martin Hickey)
    • Update schema validation handling f4b93226c6066e009a5162d0b08debbf3d82a67f (Martin Hickey)

    Helm v3.10.2 is a patch release. Users are encouraged to upgrade for the best experience. Users are encouraged to upgrade for the best experience.

    ... (truncated)

    Commits
    • 835b733 Fix backwards compatibility
    • 3caf8b5 Update string handling
    • 7c0e203 Update repo handling
    • f4b9322 Update schema validation handling
    • 50f003e fix a few function names on comments
    • c3a62f7 redirect registry client output to stderr
    • 727bdf1 Readiness & liveness probes correct port
    • 9f88ccb Updating the deb location for azure cli
    • a59afc4 Updating the repo the azure cli is installed from
    • 35af809 Updating to kubernetes 1.25.2 packages
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • helm diff upgrade output adding trailing ':'

    helm diff upgrade output adding trailing ':'

    This plugin has been very helpful and a nice addition to our workflow. I noticed an small inconsistency today when testing some local dev manually and wanted to see if it was a bug or if I was doing something incorrect.

    Version of plugin: 3.6.0

    Scenario:

    I recently broke up my values file from this:

    image: thanosio/thanos:v0.28.1
    

    to this:

    image:
      repository: thanosio/thanos
      tag: v0.28.1
    

    This made it so I changed my deployment from this:

    image: {{ .Values.image }}
    

    to this: image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"

    After making this change I anticipated the only change helm diff might see is the added '"' but this is the output I got:

    -     image: thanosio/thanos:v0.28.1
    +    image: "thanosio/thanos:v0.28.1:"
    

    Notice the trailing ':', but if I run a helm template on the chart I see this:

    "thanosio/thanos:v0.28.1"
    

    So to me seems like parsing error somewhere, also I noticed if I but this in the deployment file:

    image: "{{ .Values.image.repository }}{{ .Values.image.tag }}"
    

    helm diff shows only changes being this:

    -    image: thanosio/thanos:v0.28.1
    +   image: "thanosio/thanos:v0.28.1"
    

    but helm template shows this:

    image: "thanosio/thanosv0.28.1"
    
    opened by chrisblatt 0
  • Provide `--username` and `--password` cli args

    Provide `--username` and `--password` cli args

    Currently, helm upgrade supports --repo, --username, and --password

    $ helm upgrade --help | grep -e '--username ' -e '--password ' -e '--repo '
          --password string              chart repository password where to locate the requested chart
          --repo string                  chart repository url where to locate the requested chart
          --username string              chart repository username where to locate the requested chart
    

    However, helm diff upgrade only supports --repo

    $ helm diff upgrade --help | grep -e '--username ' -e '--password ' -e '--repo '
          --repo string                  specify the chart repository url to locate the requested chart
    

    I'd like to be able to pass in the the credentials to the helm repo when using the --repo arg. While it's currently possible to achieve the same result by helm repo adding the the repo with user then changing the chart, this introduces config changes on the local system and causes the command usage to diverge.

    Thanks in advance! Great project!

    opened by hstenzel 0
Releases(v3.6.0)
Owner
Fabian Ruff
Fabian Ruff
This is a simple chat app which shows how to use Go with Hotwire.

chat-hotwire-go This is a simple chat app which shows how to use Go with Hotwire. Messages from another user are received via Turbo Streams over a web

null 26 Jul 2, 2022
Shows your recent browser history in tree style. 树状展示浏览器历史 (For Edge / Chromium / Chrome)

Tree Style Histyle This extension shows your recent browser history in tree style. When you browser pages from internet, you always jump from one page

null 133 Jan 3, 2023
Packer Plugin Vagrant - The Vagrant multi-component plugin can be used with HashiCorp Packer to create custom images

Packer Plugin Vagrant - The Vagrant multi-component plugin can be used with HashiCorp Packer to create custom images

null 1 Jul 13, 2022
A Sonobuoy plugin to assess @crossplane conformance.

Crossplane Conformance Suite A Sonobuoy plugin to assess Crossplane conformance. To try it, first download the sonobuoy CLI, then: # The version of Cr

Crossplane 8 Jun 19, 2022
Kong Verifier plugin for HSDP API signed requests

Kong Verifier plugin for HSDP API signed requests

Andy Lo-A-Foe 2 Jan 7, 2022
mackerel metric plugin for count lines in log

mackerel metric plugin for count lines in log

Masahiro Nagano 2 Nov 13, 2021
Steampipe plugin for the Hypothesis annotation system

Steampipe plugin for the Hypothesis annotation system

Jon Udell 1 Nov 17, 2021
Simple plugin to enable the /flip command inside of Mattermost

Plugin Starter Template This plugin serves as a starting point for writing a Mattermost plugin. Feel free to base your own plugin off this repository.

null 0 Nov 4, 2021
Rollup plugin go wasm

Rollup plugin go wasm

null 4 May 11, 2022
Traefik plugin for MaxMind GeoIP2

Traefik plugin for MaxMind GeoIP2 Traefik plugin that registers a custom middleware for getting data from MaxMind GeoIP databases and pass it downstre

Scott Yen 0 Dec 19, 2021
The Webhooks Listener-Plugin library consists of two component libraries written in GoLang

The Webhooks Listener-Plugin library consists of two component libraries written in GoLang: WebHook Listener Libraries and Plugin (Event Consumer) Libraries.

Temur Yunusov 0 Feb 3, 2022
Github-org-diff - Simple CLI tool to check a diff between 2 branches of all org repos

github-org-diff Simple CLI tool to list org repos that have diff between dev and

Alex Pliutau 1 Jan 25, 2022
A helm v3 plugin to adopt existing k8s resources into a new generated helm chart

helm-adopt Overview helm-adopt is a helm plugin to adopt existing k8s resources into a new generated helm chart, the idea behind the plugin was inspir

Hamza ZOUHAIR 35 Dec 15, 2022
Ipctl - Listen to IP change and change your DNS' records dynamically

ipctl Listen to IP change and change your DNS' records dynamically Table of cont

Daniel Svitan 1 Feb 17, 2022
terraform-plugin-mux Example (upgrade(sdk/v2) + framework)

Terraform Provider Scaffolding (Terraform Plugin Framework) This template repository is built on the Terraform Plugin Framework. The template reposito

Brian Flad 0 Feb 8, 2022
Helm Operator is designed to managed the full lifecycle of Helm charts with Kubernetes CRD resource.

Helm Operator Helm Operator is designed to install and manage Helm charts with Kubernetes CRD resource. Helm Operator does not create the Helm release

Chen Zhiwei 5 Aug 25, 2022
helm-lint-ls is helm lint language server protocol LSP.

helm-lint-ls is helm lint language server protocol LSP.

MrJosh 25 Dec 27, 2022
Routines was a fixed number thread pool to process the user task, and it would respawn a corresponding new thread when panic

Routines Routines was a fixed number thread pool to process the user task, and it would respawn a corresponding new thread when panic. It supports the

hulk 12 Dec 16, 2021
If I were a malicious actor, how would I sneak my code in?

go-error-hijack-poc This repo demonstrates a hypothetical use of sentinel errors and horizontally off-screen code as attack vectors. How to Run Run th

Chris S. Kim 0 Jan 15, 2022
Start of a project that would let people stay informed about safe running spaces in their area.

SafeRun Start of a project that would let people stay informed about safe running spaces in their area. Too many people I'm friends with feel unsafe w

Ryan Dunning 0 Feb 11, 2022