Hunter Documentation Release 0.23

Total Page:16

File Type:pdf, Size:1020Kb

Hunter Documentation Release 0.23 Hunter Documentation Release 0.23 Ruslan Baratov Aug 20, 2021 Contents 1 Brief overview 3 2 Quick start 15 3 User guides 19 4 Packages 51 5 Creating new package 245 6 FAQ 273 7 Contributing 295 8 Contacts 299 9 Reference 301 Index 345 i ii Hunter Documentation, Release 0.23 Welcome to the Hunter package manager documentation! Hunter is a CMake driven cross-platform package manager for C/C++1 projects. With the help of Hunter you can organize builds for Linux, Windows, macOS, iOS, Android, Raspberry Pi and other platforms. Third-party external projects are highly customizable, effectively allowing you to have myriad variants of directories with them based on combinations of version to build, static/shared, CMake -D options, Release/Debug, etc. Separate root directories will be created for each variant, so they all can be used simultaneously on one machine without conflicts (just like virtualenv but automatically). Going further: each such root directory can be shared between several local projects if configuration of externals matches. So when you are starting another project from scratch and use the same external packages, there will be no additional copy or build triggered; the only overhead is checking the existence of a DONE stamp file for each package. In case your local environment is similar enough to the continuous integration environment of Travis/AppVeyor service, then build will not be triggered at all - cached binaries will be downloaded from GitHub server instead. Mainly Hunter is designed to manage packages with CMake build system under the hood and existing CMake packages can be quite easily integrated into system, but non-CMake packages are also supported too using custom templates (build schemes) with ExternalProject_Add command(s). The Hunter client is a collection of CMake-only modules (i.e. it’s not a binary like apt-get or script like brew) so it supports out-of-the-box all platforms/generators/IDEs which CMake can handle, like Visual Studio, Xcode, Android Studio, QtCreator, NMake, Ninja, Cygwin or MinGW. It works fine with CMake-GUI too. The prime directive used for adding package to the current root is hunter_add_package which companioning CMake’s find_package. For example: hunter_add_package(Boost COMPONENTS system filesystem iostreams) find_package(Boost CONFIG REQUIRED system filesystem iostreams) Sounds interesting? Keep reading! 1 C++ is the main goal, works for other types as well. See Manage anything. Contents 1 Hunter Documentation, Release 0.23 2 Contents CHAPTER 1 Brief overview This is a brief overview of big picture. It takes about 5 minutes of reading but will show you the main features/aspects of using Hunter. Please don’t make any assumptions about how Hunter works without reading this part. Also avoid running real code for now, it will be covered in next Quick start section. 1.1 What is it? Every Hunter release(Atom feed) archive is a meta-package with build instructions and URLs of real packages. The archive will be downloaded and unpacked automatically by the HunterGate CMake module. You only need to set the URL and SHA1: HunterGate( URL "https://github.com/cpp-pm/hunter/archive/v0.23.297.tar.gz" SHA1 "3319fe6a3b08090df7df98dee75134d68e2ef5a3" ) Here is the content of the archive in simplified form: Hunter (0.23.297) = { Boost (1.65.1, 1.65.0, 1.66.0, 1.66.0-p0, 1.67, ...), GTest (1.7.0, ...), OpenCV (4.1.1-p0, 4.0.0-p3, 3.4.6-p0, ...), OpenSSL (1.1.1, 1.1.1a, 1.1.1b, 1.1.1c, 1.1.1d, 1.1.1g, 1.1.1g-p0, ...), ... } If you download and unpack it, you can view some internals. Let’s look at the OpenSSL package properties: wget https://github.com/cpp-pm/hunter/archive/v0.14.5.tar.gz tar xf v0.14.5.tar.gz hunter.cmake holds the list of available versions: 3 Hunter Documentation, Release 0.23 grep -A3 -m3 VERSION hunter-0.14.5/cmake/projects/OpenSSL/hunter.cmake VERSION "1.1.1" URL "https://github.com/openssl/openssl/archive/OpenSSL_1_1_1.tar.gz" -- VERSION "1.1.1a" URL "https://github.com/openssl/openssl/archive/OpenSSL_1_1_1a.tar.gz" -- VERSION "1.1.1b" URL "https://github.com/openssl/openssl/archive/OpenSSL_1_1_1b.tar.gz" Install instructions from build scheme url_sha1_openssl.cmake.in: grep -A1 INSTALL_COMMAND hunter-0.14.5/cmake/projects/OpenSSL/schemes/url_sha1_ ,!openssl.cmake.in INSTALL_COMMAND make install_sw Default version from default.cmake (is customizable, see Config-ID): grep '\<OpenSSL\>' -m1 hunter-0.14.5/cmake/configs/default.cmake hunter_default_version(OpenSSL VERSION 1.1.1) See also: • Detailed sources layout • Creating version on the fly from Git submodule 1.2 Automatic builds 1.2.1 No dependencies in README Build instructions from the Hunter archive are triggered automatically when the hunter_add_package function called, hence there is no need to specify dependencies in a raw README file like: For OSX please do: > brew install foo boo For Ubuntu please do: > sudo apt-get install foo boo Then run build: > cmake -H. -B_builds > cmake --build _builds 4 Chapter 1. Brief overview Hunter Documentation, Release 0.23 Now it’s simply: Just run build: > cmake -H. -B_builds # dependencies installed automatically > cmake --build _builds 1.2.2 Optional dependencies Optional dependency? No problem, optional dependencies are expressed in a straightforward way: # required dependencies hunter_add_package(foo) hunter_add_package(boo) if(BUILD_WITH_BAR) hunter_add_package(bar) endif() Now instead of: Additionally if you want bar support please run: > brew install bar # OSX > sudo apt-get install bar # Ubuntu Then run build: > cmake -H. -B_builds -DBUILD_WITH_BAR=YES It’s simply: > cmake-H.-B_builds-DBUILD_WITH_BAR=YES # + install bar 1.2.3 Compared to a ‘requirements.txt’ style approach Note that Hunter’s approach differs from a requirements.txt-like approach (i.e. when external packages are specified in a separate file). This allows Hunter to avoid duplication of logic in many cases, even if the requirements.txt style approach also automatically downloads dependencies too. Imagine that we have to specify dependencies in some kind of requirements.cmake file and there is a user option BUILD_WITH_BAR: # requirements.cmake if(WIN32 AND BUILD_WITH_BAR) command_to_install(Bar) endif() Or, in the case that it isn’t CMake code, this might by something fancy like requirements.json: { "dependencies": { "package": "Bar", "platform": "windows", "cmake option": "BUILD_WITH_BAR" } } 1.2. Automatic builds 5 Hunter Documentation, Release 0.23 You would have to repeat the same condition in the CMakeLists.txt file: # requirements.cmake if(WIN32 AND BUILD_WITH_BAR) command_to_install(Bar) endif() # CMakeLists.txt if(WIN32 AND BUILD_WITH_BAR) find_package(Bar CONFIG REQUIRED) target_compile_definitions(... PUBLIC "WITH_BAR") endif() Later, when you need to change this dependency in CMakeLists.txt, you’d better not forget to also modify requirements.cmake accordingly. Remember real world libraries can have nontrivial chain of conditions, e.g. OpenCV components. Stackoverflow • Pip: optional dependencies 1.3 Don’t Repeat Yourself If you are already familiar with ExternalProject_Add and have written some super-build projects before, you are probably already aware that writing a complete solution with toolchains, build types, build options, parallel jobs, forwarding of compiler flags, and making it work correctly for all generators is not a trivial task. Hunter stores ExternalProject_Add recipes as a set of templates. Once written, formula (build scheme) can be reused by other projects without copying the collection of super-build files (DRY principle). When a new package with a new scheme is introduced, all you need to do is just update the SHA1/URL of HunterGate command. Stackoverflow • How to use CMake ExternalProject_Add or alternatives in a cross platform way? 1.4 Customization You have full control of how packages will be built. You can create your own mapping of version -> URL, add globals like compiler and flags, or add new build options to external packages. 1.4.1 Hunter-ID First level of customization. Hunter archive. Hunter-ID is the first 7 digits of SHA1 of Hunter archive. This level defines list of available packages and mapping version -> URL/SHA1. Several Hunter-ID can coexist in the same HUNTER_ROOT directory. HunterGate command will control your choice: 6 Chapter 1. Brief overview Hunter Documentation, Release 0.23 Hunter- ID 1eae623 Hunter ver- 0.8.3 sion SHA1 of 1eae623cb5ce9da39c8c3e1b0f6e452f244ddc17 archive Working ${HUNTER_ROOT}/_Base/1eae623/... directory Packages Foo1 1.0.0 mysite.xyz/Foo-1.0.0. tar.gz Boo 2.0.0 mysite.xyz/Boo-2.0.0. tar.gz 2.1.0 mysite.xyz/Boo-2.1.0. tar.gz Roo 1.2.3 mysite.xyz/Roo-1.2.3. tar.gz 1.2.4 mysite.xyz/Roo-1.2.4. tar.gz e07a124 Hunter ver- 0.8.4 sion SHA1 of e07a124192b0a47b0b60ade40fa873a42ec27822 archive Working ${HUNTER_ROOT}/_Base/e07a124/... directory Packages Awesome 1.0.0 example.com/Awesome-1.0.0.tar.gz Best 2.0.0 example.com/Best-2.0.0.tar.gz 2.0.1 example.com/Best-2.0.1.tar.gz Foo1 1.0.0 example.com/Foo-1.0.0-patch-1.tar.gz Message in logs: -- [hunter] [ Hunter-ID: 1eae623 | Toolchain-ID: ... | Config-ID: ... ] -- [hunter] [ Hunter-ID: e07a124 | Toolchain-ID: ... | Config-ID: ... ] Hunter • Releases • Atom feed 1.4.2 Toolchain-ID Second level of customization. Compiler and flags. Each build can be run with different toolchains. In general the result is a completely different root directory (containing (lib/include). For example on Windows you can simultaneously build Visual Studio (32/64), NMake, Cygwin and MinGW projects, on Linux GCC/Clang, on Mac Xcode, Makefile, iOS. Or choose various clang tools like static analyzer/sanitizers and other platforms like Android/Raspberry Pi. Each toolchain file will be forwarded to external project. This means, if you create a toolchain with compiler g++ and flag -std=c++11 all dependent projects will be built by g++ -std=c++11.
Recommended publications
  • Open Source Used in Influx1.8 Influx 1.9
    Open Source Used In Influx1.8 Influx 1.9 Cisco Systems, Inc. www.cisco.com Cisco has more than 200 offices worldwide. Addresses, phone numbers, and fax numbers are listed on the Cisco website at www.cisco.com/go/offices. Text Part Number: 78EE117C99-1178791953 Open Source Used In Influx1.8 Influx 1.9 1 This document contains licenses and notices for open source software used in this product. With respect to the free/open source software listed in this document, if you have any questions or wish to receive a copy of any source code to which you may be entitled under the applicable free/open source license(s) (such as the GNU Lesser/General Public License), please contact us at [email protected]. In your requests please include the following reference number 78EE117C99-1178791953 Contents 1.1 golang-protobuf-extensions v1.0.1 1.1.1 Available under license 1.2 prometheus-client v0.2.0 1.2.1 Available under license 1.3 gopkg.in-asn1-ber v1.0.0-20170511165959-379148ca0225 1.3.1 Available under license 1.4 influxdata-raft-boltdb v0.0.0-20210323121340-465fcd3eb4d8 1.4.1 Available under license 1.5 fwd v1.1.1 1.5.1 Available under license 1.6 jaeger-client-go v2.23.0+incompatible 1.6.1 Available under license 1.7 golang-genproto v0.0.0-20210122163508-8081c04a3579 1.7.1 Available under license 1.8 influxdata-roaring v0.4.13-0.20180809181101-fc520f41fab6 1.8.1 Available under license 1.9 influxdata-flux v0.113.0 1.9.1 Available under license 1.10 apache-arrow-go-arrow v0.0.0-20200923215132-ac86123a3f01 1.10.1 Available under
    [Show full text]
  • Continuous Integration
    Continuous Integration Mark C. Miller Lawrence Livermore National Laboratory Software Productivity Track, ATPESC 2020 See slide 2 for license details exascaleproject.org License, Citation and Acknowledgements License and Citation • This work is licensed under a Creative Commons Attribution 4.0 International License (CC BY 4.0). • The requested citation the overall tutorial is: David E. Bernholdt, Anshu Dubey, Mark C. Miller, Katherine M. Riley, and James M. Willenbring, Software Productivity Track, in Argonne Training Program for Extreme Scale Computing (ATPESC), August 2020, online. DOI: 10.6084/m9.figshare.12719834 • Individual modules may be cited as Speaker, Module Title, in Software Productivity Track… Acknowledgements • Additional contributors include: Patricia Grubel, Rinku Gupta, Mike Heroux, Alicia Klinvex, Jared O’Neal, David Rogers, Deborah Stevens • This work was supported by the U.S. Department of Energy Office of Science, Office of Advanced Scientific Computing Research (ASCR), and by the Exascale Computing Project (17-SC-20-SC), a collaborative effort of the U.S. Department of Energy Office of Science and the National Nuclear Security Administration. • This work was performed in part at the Argonne National Laboratory, which is managed by UChicago Argonne, LLC for the U.S. Department of Energy under Contract No. DE-AC02-06CH11357. • This work was performed in part at the Oak Ridge National Laboratory, which is managed by UT-Battelle, LLC for the U.S. Department of Energy under Contract No. DE-AC05-00OR22725. • This work was performed in part at the Lawrence Livermore National Laboratory, which is managed by Lawrence Livermore National Security, LLC for the U.S. Department of Energy under Contract No.
    [Show full text]
  • License Agreement
    End User License Agreement If you have another valid, signed agreement with Licensor or a Licensor authorized reseller which applies to the specific products or services you are downloading, accessing, or otherwise receiving, that other agreement controls; otherwise, by using, downloading, installing, copying, or accessing Software, Maintenance, or Consulting Services, or by clicking on "I accept" on or adjacent to the screen where these Master Terms may be displayed, you hereby agree to be bound by and accept these Master Terms. These Master Terms also apply to any Maintenance or Consulting Services you later acquire from Licensor relating to the Software. You may place orders under these Master Terms by submitting separate Order Form(s). Capitalized terms used in the Agreement and not otherwise defined herein are defined at https://terms.tibco.com/posts/845635-definitions. 1. Applicability. These Master Terms represent one component of the Agreement for Licensor's products, services, and partner programs and apply to the commercial arrangements between Licensor and Customer (or Partner) listed below. Additional terms referenced below shall apply. a. Products: i. Subscription, Perpetual, or Term license Software ii. Cloud Service (Subject to the Cloud Service Terms found at https://terms.tibco.com/?types%5B%5D=post&feed=recent#cloud-services) iii. Equipment (Subject to the Equipment Terms found at https://terms.tibco.com/?types%5B%5D=post&feed=recent#equipment-terms) b. Services: i. Maintenance (Subject to the Maintenance terms found at https://terms.tibco.com/?types%5B%5D=post&feed=recent#october-maintenance) ii. Consulting Services (Subject to the Consulting terms found at https://terms.tibco.com/?types%5B%5D=post&feed=recent#supplemental-terms) iii.
    [Show full text]
  • Download the Basketballplayer.Ngql Fle Here
    Nebula Graph Database Manual v1.2.1 Min Wu, Amber Zhang, XiaoDan Huang 2021 Vesoft Inc. Table of contents Table of contents 1. Overview 4 1.1 About This Manual 4 1.2 Welcome to Nebula Graph 1.2.1 Documentation 5 1.3 Concepts 10 1.4 Quick Start 18 1.5 Design and Architecture 32 2. Query Language 43 2.1 Reader 43 2.2 Data Types 44 2.3 Functions and Operators 47 2.4 Language Structure 62 2.5 Statement Syntax 76 3. Build Develop and Administration 128 3.1 Build 128 3.2 Installation 134 3.3 Configuration 141 3.4 Account Management Statement 161 3.5 Batch Data Management 173 3.6 Monitoring and Statistics 192 3.7 Development and API 199 4. Data Migration 200 4.1 Nebula Exchange 200 5. Nebula Graph Studio 224 5.1 Change Log 224 5.2 About Nebula Graph Studio 228 5.3 Deploy and connect 232 5.4 Quick start 237 5.5 Operation guide 248 6. Contributions 272 6.1 Contribute to Documentation 272 6.2 Cpp Coding Style 273 6.3 How to Contribute 274 6.4 Pull Request and Commit Message Guidelines 277 7. Appendix 278 7.1 Comparison Between Cypher and nGQL 278 - 2/304 - 2021 Vesoft Inc. Table of contents 7.2 Comparison Between Gremlin and nGQL 283 7.3 Comparison Between SQL and nGQL 298 7.4 Vertex Identifier and Partition 303 - 3/304 - 2021 Vesoft Inc. 1. Overview 1. Overview 1.1 About This Manual This is the Nebula Graph User Manual.
    [Show full text]
  • Easybuild Documentation Release 20210907.0
    EasyBuild Documentation Release 20210907.0 Ghent University Tue, 07 Sep 2021 08:55:41 Contents 1 What is EasyBuild? 3 2 Concepts and terminology 5 2.1 EasyBuild framework..........................................5 2.2 Easyblocks................................................6 2.3 Toolchains................................................7 2.3.1 system toolchain.......................................7 2.3.2 dummy toolchain (DEPRECATED) ..............................7 2.3.3 Common toolchains.......................................7 2.4 Easyconfig files..............................................7 2.5 Extensions................................................8 3 Typical workflow example: building and installing WRF9 3.1 Searching for available easyconfigs files.................................9 3.2 Getting an overview of planned installations.............................. 10 3.3 Installing a software stack........................................ 11 4 Getting started 13 4.1 Installing EasyBuild........................................... 13 4.1.1 Requirements.......................................... 14 4.1.2 Using pip to Install EasyBuild................................. 14 4.1.3 Installing EasyBuild with EasyBuild.............................. 17 4.1.4 Dependencies.......................................... 19 4.1.5 Sources............................................. 21 4.1.6 In case of installation issues. .................................. 22 4.2 Configuring EasyBuild.......................................... 22 4.2.1 Supported configuration
    [Show full text]
  • Bringing Probabilistic Programming to Scientific Simulators at Scale
    Etalumis: Bringing Probabilistic Programming to Scientific Simulators at Scale Atılım Güneş Baydin, Lei Shao, Wahid Bhimji, Lukas Heinrich, Lawrence Meadows, Jialin Liu, Andreas Munk, Saeid Naderiparizi, Bradley Gram-Hansen, Gilles Louppe, Mingfei Ma, Xiaohui Zhao, Philip Torr, Victor Lee, Kyle Cranmer, Prabhat, and Frank Wood SC19, Denver, CO, United States 19 November 2019 Simulation and HPC Computational models and simulation are key to scientific advance at all scales Particle physics Nuclear physics Material design Drug discovery Weather Climate science Cosmology 2 Introducing a new way to use existing simulators Probabilistic programming Simulation Supercomputing (machine learning) 3 Simulators Parameters Outputs (data) Simulator 4 Simulators Parameters Outputs (data) Simulator Prediction: ● Simulate forward evolution of the system ● Generate samples of output 5 Simulators Parameters Outputs (data) Simulator Prediction: ● Simulate forward evolution of the system ● Generate samples of output 6 Simulators Parameters Outputs (data) Simulator Prediction: ● Simulate forward evolution of the system ● Generate samples of output WE NEED THE INVERSE! 7 Simulators Parameters Outputs (data) Simulator Prediction: ● Simulate forward evolution of the system ● Generate samples of output Inference: ● Find parameters that can produce (explain) observed data ● Inverse problem ● Often a manual process 8 Simulators Parameters Outputs (data) Inferred Simulator Observed data parameters Gene network Gene expression 9 Simulators Parameters Outputs (data)
    [Show full text]
  • Master Thesis
    Master thesis To obtain a Master of Science Degree in Informatics and Communication Systems from the Merseburg University of Applied Sciences Subject: Tunisian truck license plate recognition using an Android Application based on Machine Learning as a detection tool Author: Supervisor: Achraf Boussaada Prof.Dr.-Ing. Rüdiger Klein Matr.-Nr.: 23542 Prof.Dr. Uwe Schröter Table of contents Chapter 1: Introduction ................................................................................................................................. 1 1.1 General Introduction: ................................................................................................................................... 1 1.2 Problem formulation: ................................................................................................................................... 1 1.3 Objective of Study: ........................................................................................................................................ 4 Chapter 2: Analysis ........................................................................................................................................ 4 2.1 Methodological approaches: ........................................................................................................................ 4 2.1.1 Actual approach: ................................................................................................................................... 4 2.1.2 Image Processing with OCR: ................................................................................................................
    [Show full text]
  • An Accuracy Examination of OCR Tools
    International Journal of Innovative Technology and Exploring Engineering (IJITEE) ISSN: 2278-3075, Volume-8, Issue-9S4, July 2019 An Accuracy Examination of OCR Tools Jayesh Majumdar, Richa Gupta texts, pen computing, developing technologies for assisting Abstract—In this research paper, the authors have aimed to do a the visually impaired, making electronic images searchable comparative study of optical character recognition using of hard copies, defeating or evaluating the robustness of different open source OCR tools. Optical character recognition CAPTCHA. (OCR) method has been used in extracting the text from images. OCR has various applications which include extracting text from any document or image or involves just for reading and processing the text available in digital form. The accuracy of OCR can be dependent on text segmentation and pre-processing algorithms. Sometimes it is difficult to retrieve text from the image because of different size, style, orientation, a complex background of image etc. From vehicle number plate the authors tried to extract vehicle number by using various OCR tools like Tesseract, GOCR, Ocrad and Tensor flow. The authors in this research paper have tried to diagnose the best possible method for optical character recognition and have provided with a comparative analysis of their accuracy. Keywords— OCR tools; Orcad; GOCR; Tensorflow; Tesseract; I. INTRODUCTION Optical character recognition is a method with which text in images of handwritten documents, scripts, passport documents, invoices, vehicle number plate, bank statements, Fig.1: Functioning of OCR [2] computerized receipts, business cards, mail, printouts of static-data, any appropriate documentation or any II. OCR PROCDURE AND PROCESSING computerized receipts, business cards, mail, printouts of To improve the probability of successful processing of an static-data, any appropriate documentation or any picture image, the input image is often ‘pre-processed’; it may be with text in it gets processed and the text in the picture is de-skewed or despeckled.
    [Show full text]
  • Linux from Scratch 版本 R11.0-36-中⽂翻译版 发布于 2021 年 9 ⽉ 21 ⽇
    Linux From Scratch 版本 r11.0-36-中⽂翻译版 发布于 2021 年 9 ⽉ 21 ⽇ 由 Gerard Beekmans 原著 总编辑:Bruce Dubbs Linux From Scratch: 版本 r11.0-36-中⽂翻译版 : 发布于 2021 年 9 ⽉ 21 ⽇ 由 由 Gerard Beekmans 原著和总编辑:Bruce Dubbs 版权所有 © 1999-2021 Gerard Beekmans 版权所有 © 1999-2021, Gerard Beekmans 保留所有权利。 本书依照 Creative Commons License 许可证发布。 从本书中提取的计算机命令依照 MIT License 许可证发布。 Linux® 是Linus Torvalds 的注册商标。 Linux From Scratch - 版本 r11.0-36-中⽂翻译版 ⽬录 序⾔ .................................................................................................................................... viii i. 前⾔ ............................................................................................................................ viii ii. 本书⾯向的读者 ............................................................................................................ viii iii. LFS 的⽬标架构 ............................................................................................................ ix iv. 阅读本书需要的背景知识 ................................................................................................. ix v. LFS 和标准 ..................................................................................................................... x vi. 本书选择软件包的逻辑 .................................................................................................... xi vii. 排版约定 .................................................................................................................... xvi viii. 本书结构 .................................................................................................................
    [Show full text]
  • 공개sw 솔루션 목록(2015.12.30)
    OS/DBMS/WEB/WAS 공개SW 솔루션 목록(2015.12.30) 순번 분류 솔루션명 라이선스 기술지원 홈페이지 제품개요 1 DBMS C-JDBC LGPL community http://c-jdbc.ow2.org/ 데이터베이스 클러스터 2 DBMS DB4 오브젝트(db4o) GPL & dOCL prof/community http://www.db4o.com 객체지향 메모리 데이터베이스 엔진 GPL v2, GPL v3, 3 DBMS Drizzle community http://www.drizzle.org/ MySQL 6.0에서 파생된 RDBMS BSD 4 DBMS H2 EPL, MPL community http://www.h2database.com/ 자바기반 RDBMS HSQLDB 5 DBMS (Hyper Structured Query BSD community http://www.hsqldb.org 경량의 Java 기반 관계형 데이터베이스 Language Database) 데이터 웨어하우스, OLAP서버, BI 시스템 운용을 목적으 6 DBMS LucidDB GPL v2, LGPL v2 community http://luciddb.sourceforge.net 로 개발된 오픈소스 DBMS GPL v3, AGPL v3, 7 DBMS Neo4j community http://www.neo4j.org 그래프 데이터베이스 commercial AGPL v3, 8 DBMS VoltDB Proprietary prof/community http://voltdb.com/ 인메모리기반 RDBMS License 오픈소스 관계형 데이터베이스 관리 시스템. 9 DBMS 마리아DB(MariaDB) GPLv2, LGPL prof/community https://mariadb.org/ MySQL과 동일한 소스 코드를 기반 세계에서 가장 널리 사용되고 있는 대표적인 10 DBMS 마이에스큐엘(MySQL) GPL v2 prof/community http://www.mysql.com 관계형 데이터베이스 ※ prof : Professional Support(전문업체 기술지원) ※ community : Community Support(커뮤니티 기술지원) OS/DBMS/WEB/WAS 공개SW 솔루션 목록(2015.12.30) 순번 분류 솔루션명 라이선스 기술지원 홈페이지 제품개요 IBM에서 기증한 cloudscape 소스 기반으로 11 DBMS 아파치 더비(Apache Derby) Apache v2 community http://db.apache.org/derby/ 개발된 Java 기반의 관계형 데이터베이스 Berkeley 오라클 버클리 DB Database License http://www.oracle.com/kr/products/database/ 슬리피캣을 인수한 오라클에서 제공하는 12 DBMS prof/community (Oracle Berkeley DB) or berkeley-db/index.html 고성능 임베디드 데이터베이스 Sleepycat License GPL or Postgresql 데이터베이스의 기반으로 상용화된 13 DBMS 잉그레스(Ingres) prof/community
    [Show full text]
  • Enforcing Abstract Immutability
    Enforcing Abstract Immutability by Jonathan Eyolfson A thesis presented to the University of Waterloo in fulfillment of the thesis requirement for the degree of Doctor of Philosophy in Electrical and Computer Engineering Waterloo, Ontario, Canada, 2018 © Jonathan Eyolfson 2018 Examining Committee Membership The following served on the Examining Committee for this thesis. The decision of the Examining Committee is by majority vote. External Examiner Ana Milanova Associate Professor Rensselaer Polytechnic Institute Supervisor Patrick Lam Associate Professor University of Waterloo Internal Member Lin Tan Associate Professor University of Waterloo Internal Member Werner Dietl Assistant Professor University of Waterloo Internal-external Member Gregor Richards Assistant Professor University of Waterloo ii I hereby declare that I am the sole author of this thesis. This is a true copy of the thesis, including any required final revisions, as accepted by my examiners. I understand that my thesis may be made electronically available to the public. iii Abstract Researchers have recently proposed a number of systems for expressing, verifying, and inferring immutability declarations. These systems are often rigid, and do not support “abstract immutability”. An abstractly immutable object is an object o which is immutable from the point of view of any external methods. The C++ programming language is not rigid—it allows developers to express intent by adding immutability declarations to methods. Abstract immutability allows for performance improvements such as caching, even in the presence of writes to object fields. This dissertation presents a system to enforce abstract immutability. First, we explore abstract immutability in real-world systems. We found that developers often incorrectly use abstract immutability, perhaps because no programming language helps developers correctly implement abstract immutability.
    [Show full text]
  • Project Skeleton for Scientific Software
    Computational Photonics Group Department of Electrical and Computer Engineering Technical University of Munich bertha: Project Skeleton for Scientific Software Michael Riesch , Tien Dat Nguyen , and Christian Jirauschek Department of Electrical and Computer Engineering, Technical University of Munich, Arcisstr. 21, 80333 Munich, Germany [email protected] Received: 10 December 2019 / Accepted: 04 March 2020 / Published: 23 March 2020 * Abstract — Science depends heavily on reliable and easy-to-use software packages, such as mathematical libraries or data analysis tools. Developing such packages requires a lot of effort, which is too often avoided due to the lack of funding or recognition. In order to reduce the efforts required to create sustainable software packages, we present a project skeleton that ensures the best software engineering practices from the start of a project, or serves as reference for existing projects. 1 Introduction In a recent essay in Nature [1], a familiar dilemma in science was addressed. On the one hand, science relies heavily on open-source software packages, such as libraries for mathematical operations, implementations of numerical methods, or data analysis tools. As a consequence, those software packages need to work reliably and should be easy to use. On the other hand, scientific software is notoriously underfunded and the required efforts are achieved as side projects or by the scientists working in their spare time. Indeed, a lot of effort has to be invested beyond the work on the actual implementation – which is typically a formidable challenge on its own. This becomes apparent from literature on software engineering in general (such as the influential “Pragmatic Programmer” [2]), and in scientific contexts in particular (e.g., [3–6]).
    [Show full text]