You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
*[built-in profiler](https://docs.julialang.org/en/v1/manual/profile/) and [allocation profiler](https://docs.julialang.org/en/v1/stdlib/Profile/#Memory-profiling)
Copy file name to clipboardExpand all lines: sharing/index.md
+8-4Lines changed: 8 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -93,7 +93,8 @@ If you want to have more control over your tests, you can try
93
93
94
94
*[ReferenceTests.jl](https://github.com/JuliaTesting/ReferenceTests.jl) to compare function outputs with reference files.
95
95
*[ReTest.jl](https://github.com/JuliaTesting/ReTest.jl) to define tests next to the source code and control their execution.
96
-
*[TestItemRunner.jl](https://github.com/julia-vscode/TestItemRunner.jl) to leverage the testing interface of VSCode.
96
+
*[TestItemRunner.jl](https://github.com/julia-vscode/TestItemRunner.jl) and [ReTestItems.jl](https://github.com/JuliaTesting/ReTestItems.jl) to leverage the testing interface of VSCode.
97
+
*[TestReadme.jl](https://github.com/thchr/TestReadme.jl) to test whatever samples are in your README
97
98
98
99
}
99
100
@@ -257,7 +258,7 @@ We now explore a few specific issues that often arise.
257
258
A first hurdle is [random number generation](https://docs.julialang.org/en/v1/stdlib/Random/), which is not guaranteed to remain stable across Julia versions.
258
259
To ensure that the random streams remain exactly the same, you need to use [StableRNGs.jl](https://github.com/JuliaRandom/StableRNGs.jl).
259
260
Another aspect is dataset download and management.
260
-
The packages [DataDeps.jl](https://github.com/oxinabox/DataDeps.jl) and [ArtifactUtils.jl](https://github.com/JuliaPackaging/ArtifactUtils.jl) can help you bundle non-code elements with your package.
261
+
The packages [DataDeps.jl](https://github.com/oxinabox/DataDeps.jl), [DataToolkit.jl](https://github.com/tecosaur/DataToolkit.jl) and [ArtifactUtils.jl](https://github.com/JuliaPackaging/ArtifactUtils.jl) can help you bundle non-code elements with your package.
261
262
A third thing to consider is proper citation and versioning.
262
263
Giving your package a with [Zenodo](https://zenodo.org/) ensures that everyone can properly cite it in scientific publications.
263
264
Similarly, your papers should cite the packages you use as dependencies: [PkgCite.jl](https://github.com/SebastianM-C/PkgCite.jl) will help with that.
@@ -266,12 +267,13 @@ Similarly, your papers should cite the packages you use as dependencies: [PkgCit
266
267
267
268
Making packages play nice with one another is a key goal of the Julia ecosystem.
268
269
Since Julia 1.9, this can be done with [package extensions](https://pkgdocs.julialang.org/v1/creating-packages/#Conditional-loading-of-code-in-packages-(Extensions)), which override specific behaviors based on the presence of a given package in the environment.
269
-
To preserve compatibility with earlier Julia versions, [PackageExtensionTools.jl](https://github.com/cjdoris/PackageExtensionTools.jl) is the way to go.
270
+
[PackageExtensionTools.jl](https://github.com/cjdoris/PackageExtensionTools.jl) eases the pain of setting up extensions.
271
+
As for compatibility with earlier Julia versions, [Compat.jl](https://github.com/JuliaLang/Compat.jl) is your best ally.
270
272
271
273
Furthermore, the Julia ecosystem as a whole plays nice with other programming languages too.
272
274
[C and Fortran](https://docs.julialang.org/en/v1/manual/calling-c-and-fortran-code/) are natively supported.
273
275
Python can be easily interfaced with the combination of [CondaPkg.jl](https://github.com/cjdoris/CondaPkg.jl) and [PythonCall.jl](https://github.com/cjdoris/PythonCall.jl).
274
-
Other language compatibility packages can be found in the [JuliaInterop](https://github.com/JuliaInterop) organization, like [RCall.jl](https://github.com/JuliaInterop/RCall.jl) or [Cxx.jl](https://github.com/JuliaInterop/Cxx.jl).
276
+
Other language compatibility packages can be found in the [JuliaInterop](https://github.com/JuliaInterop) organization, like [RCall.jl](https://github.com/JuliaInterop/RCall.jl).
275
277
276
278
\advanced{
277
279
@@ -281,6 +283,8 @@ This problem of "interfaces" does not yet have a definitive solution in Julia, b
281
283
282
284
}
283
285
286
+
Part of interoperability is also flexibility and customization: the [Preferences.jl](https://github.com/JuliaPackaging/Preferences.jl) package gives a nice way to specify various options in TOML files.
287
+
284
288
## Collaboration
285
289
286
290
Once your package grows big enough, you might need to bring in some help.
0 commit comments